首页 > 解决方案 > 空项目作为 HTML

问题描述

select在 Razor 页面中,您可以通过执行类似以下操作为 a 指定一个空的第一项:

<select asp-for="SelectedTags" asp-items="Model.TagOptions">
    <option value="">Choose a tag</option>
</select>

Tag Helper是否有一个选项,abp-select例如:

<abp-select asp-for="Mentor.RegionId" asp-items="Model.Regions">
    <option value="">Choose a region</option>
</abp-select>

参考:https ://docs.microsoft.com/en-us/aspnet/core/mvc/views/working-with-forms?view=aspnetcore-5.0#the-select-tag-helper

标签: asp.net-corerazorasp.net-core-mvcabpasp.net-core-tag-helpers

解决方案


AbpSelectTagHelperService从 ABP 4.3.0开始这是不可能的,因为output.Content在不调用和使用output.GetChildContentAsync.

public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
{
    var innerHtml = await GetFormInputGroupAsHtmlAsync(context, output);

    ...

    if (suppress)
    {
        output.SuppressOutput();
    }
    else
    {
        output.TagName = "div";
        ...
        output.Content.SetHtmlContent(innerHtml);
    }
}

protected virtual async Task<string> GetFormInputGroupAsHtmlAsync(TagHelperContext context, TagHelperOutput output)
{
    var selectTag = await GetSelectTagAsync(context, output);
    ...
}
protected virtual async Task<TagHelperOutput> GetSelectTagAsync(TagHelperContext context, TagHelperOutput output)
{
    ...

    var selectTagHelperOutput = await selectTagHelper.ProcessAndGetOutputAsync(GetInputAttributes(context, output), context, "select", TagMode.StartTagAndEndTag);

    // selectTagHelperOutput.Content.SetHtmlContent(childContent); // Missing
    ...
}

参考:


推荐阅读