2016-11-21 47 views
1

我看到很多使用ASP.NET Core Tag Helpers使用ProcessAsync獲取HTML元素的InnerText的示例。例如,以下按預期工作:如何從ASP.NET核心標籤助手同步獲取InnerText

public override async Task ProcessAsync(TagHelperContext context, 
           TagHelperOutput output) 
    { 
     var childContent = await output.GetChildContentAsync(); 
     var innerHtml = childContent.GetContent(); 
     output.Content.SetHtmlContent("---" + innerHtml + "---"); 
    } 

但是,我想同步獲取它,而下面不會。如何使用Process(同步)獲取密文?

public override void Process(TagHelperContext context, TagHelperOutput output) 
    { 
     var innerHtml = output.Content.GetContent(); 
     output.Content.SetHtmlContent("---" + innerHtml + "---"); 
    } 

回答

3

爲什麼?它對你的情況有什麼不同?你在做什麼,你認爲需要同步訪問?

如果你認爲你需要它,之後

var innerHtml = output.GetChildContentAsync().Result.GetContent(); 
+0

感謝@blowdart。我對asp.net團隊的理解是,如果你不需要異步(比如你只是做一些簡單的字符串連接工作,異步不僅不是必須的,而且是廣告開銷。 –

+1

不是那個時候。Razor是異步的你已經是異步的了,應該沒有什麼區別, – blowdart

+0

這很有道理,謝謝你解釋。 –