使用ASP.NET核心标记助手,Process方法是否调用ProcessAsync或其他方式?

Pet*_*ner 3 tag-helpers asp.net-core

我在asp.net MVC源代码中找不到TagHelper方法的源代码.我想了解两者之间的关系.我注意到ITagHelper接口只需要ProcessAsync,所以我认为Process必须以某种方式调用ProcessAsync,但我想在源代码中找到它,所以我更好理解.

https://docs.microsoft.com/en-us/aspnet/core/api/microsoft.aspnetcore.razor.taghelpers.itaghelper

Dav*_*idG 5

我认为您正在看到Process实际来自TagHelper实现ITagHelper接口并添加Process为虚拟方法的方法.XML评论说:

使用给定的上下文和输出同步执行TagHelper.

因此,完全取决于标记助手如何实现这些方法.正如你的建议,一种选择是让一个人打电话给对方.实现完全取决于组件本身.但是,针对异步方法的XML注释说明了这一点:

ProcessAsync:默认调用 Process

代码显示了这是如何工作的:

public virtual Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
{
    Process(context, output);
    return TaskCache.CompletedTask;
}
Run Code Online (Sandbox Code Playgroud)