我正在尝试将以下代码用于自定义标签帮助器,并认为这对于引用内置标签帮助器的局部视图应该有效,例如“ asp-for”。但是,似乎渲染不起作用。根据此讨论,看起来应该是:https://github.com/aspnet/Mvc/issues/5504
public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
{
(_htmlHelper as IViewContextAware).Contextualize(ViewContext);
var wiring = new WireupModel() { FieldName = this.FieldName, PlaceHolder = this.PlaceHolder };
var content = await _htmlHelper.PartialAsync("~/Views/Shared/_EditControlTemplate.cshtml", wiring);
output.TagName = "div";
output.Attributes.SetAttribute("class", "col-12 col-sm-6 form-group mb-3");
output.Content.SetHtmlContent(content);
}
部分视图中的html元素之一是看起来像这样的标签:
<label asp-for="@Model.FieldName" class="control-label"></label>
但是,它呈现如下:
<label class="control-label" for="FieldName">FieldName</label>
在运行时,我进入了局部视图中的razor代码,并且该值正确地从模型中以“ FirstName”而不是“ FieldName”的形式传入。
我的目标是通过将这样的HTML替换为自定义标签来减少大量重复的html:
<edit-control field-name="FirstName" place-holder="@SharedLocalizer["First Name"]"></edit-control>