2017-07-13 13 views
0

です:今ASP.NETコアTagHelper - それは私が簡単なToastTagHelper持って空

[HtmlTargetElement("toast")] 
public class ToastTagHelper : TagHelper 
{ 
    public override void Process(TagHelperContext context, TagHelperOutput output) 
    { 
     string message = output.Content.GetContent(); 
     if (string.IsNullOrWhiteSpace(message)) 
     { 
      output.TagName = ""; // this should not output anything! 
      return; 
     } 

     output.TagName = "div"; 
     output.Attributes.Add("id", "toast"); 
     output.Content.SetContent(message.Trim()); 
    } 
} 

を、ここで私は私の_layoutでそれを使用する方法は次のとおりです。

<toast>@ViewBag.Message</toast> 

そして私はViewBagを初期化します。私が必要な時に私のコントローラのメッセージ。問題もあり、私には、以下の取得に初期化されます:

[メッセージテキスト]ここ

NO TAGS。私はブレークポイントを置いて、ここで何が起こるのですか?プロセスメソッドにヒットすると、コンテンツはまだ空です。そして、後でパイプのどこかでViewBagからコンテンツを初期化しますが、それは遅すぎます。

どうすればいいですか?

答えて

0

これが機能するには、Processの代わりにProcessAsyncを無効にして、output.Content.GetContent()の代わりにawait output.GetChildContentAsync()を呼び出してください。

関連する問題