在自定义标记帮助器中解析asp-for

时间:2016-03-24 10:23:43

标签: asp.net asp.net-mvc razor

我的编辑表单中有很多Bootstrap输入,我使用asp-for标签帮助器进行模型绑定。

                <div class="form-group">
                    <div class="fg-line">
                        <label asp-for="@Model.Name" class="control-label"></label>
                        <input asp-for="@Model.Name" class="form-control"/>
                    </div>
                    <span asp-validation-for="@Model.Name" class="help-block"></span>
                </div>

我想写一个自定义标记帮助器,以便我可以写:

<bsinput asp-for="@Model.Name" /> 

...产生上面的输出。

是否可以评估嵌套标记助手?

1 个答案:

答案 0 :(得分:5)

在对同一问题进行一些研究时,我偶然发现了这个问题。这就是我为我解决问题的方法:

在我的情况下,我有一个使用我的自定义标记助手生成的颜色选择器。这是我的班级:

public class ColourPickerTagHelper : TagHelper
{
    public ModelExpression AspFor { get; set; }
    public List<CustomSelectItem> AspColours { get; set; }

    public override void Process(TagHelperContext context, TagHelperOutput output)
    {
        output.TagName = "select";
        string name = this.AspFor.Name;
        if (!String.IsNullOrEmpty(name))
        {
            output.Attributes.Add("name", name);
        }
        output.Content.SetHtmlContent(LoadMyOptions());
        output.TagMode = TagMode.StartTagAndEndTag;
    }
}

我称之为:

<colour-picker asp-for="Form.Colour" asp-colours="Model.MyOptions" />
编辑:自从我发现了ModelExpression对象后,我更新了我的答案。