2016-11-21 88 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

这很有道理,谢谢你解释。 –