我在.cshtml文件中有以下代码:
<label asp-for="Email">Your email:</label>
解析后,幕后发生了什么?
我可以看到asp-for
实际上在呼叫Microsoft.AspNetCore.Mvc.TagHelpers.LabelTagHelper.For
。
但是IHtmlGenerator
的哪种实现传递给LabelTagHelper
构造函数?
在.NET控制台应用程序中,我只需在ILSpy中打开.exe即可查看发生了什么。
如何为Asp.net Core应用执行相同的操作?
答案 0 :(得分:0)
您可以查看LableTagHelper源代码:
https://github.com/aspnet/AspNetCore/blob/master/src/Mvc/Mvc.TagHelpers/src/LabelTagHelper.cs
IHtmlGenerator
传递给构造函数并生成标签
var tagBuilder = Generator.GenerateLabel(
ViewContext,
For.ModelExplorer,
For.Name,
labelText: null,
htmlAttributes: null);
更新:
默认的Asp.net Core MVC尽可能避免直接依赖。Asp.netCore MVC无需硬编码IHtmlGenerator
接口的实现,而是加载在应用程序初始化期间注入依赖的实现。视图引擎在创建IHtmlHelper
的接口时,会通过构造函数传递IHtmlGenerator
实例。
请参阅here