尝试修改构建器以在DataAnnotation属性[Display(Name =“Text”)]中设置样式文本

时间:2012-03-22 14:26:27

标签: asp.net-mvc-3 data-annotations

我问了一个问题并为我的具体问题找到了一个很好的答案,但是使用<select>遇到了<label>列表的问题,并试图用一些东西设置DataAnnotation属性[Display(Name="Text")]的样式比如[Display(Name="Text <span class=\"myclass\">Special styled text</span>.")]

以下是Question/Answer链接。

答案解释了Html编码并向我提供了Html.LabelFor助手的解决方案。它完全符合我眼前的情况。但是,我后来发现,由于我使用代码创建<select>列表,因此新的帮助程序没有被它拾取。任何帮助是极大的赞赏。以下是我正在使用的<select>构建器代码:

public MvcHtmlString BuildInput(string fieldName, 
    SelectListItem item, string inputType)
{
    var id = ViewData.TemplateInfo.GetFullHtmlFieldId(item.Value);
    var wrapper = new TagBuilder("div");
    wrapper.AddCssClass("selector-item");

    var input = new TagBuilder("input");
    input.MergeAttribute("type", inputType);
    input.MergeAttribute("name", fieldName);
    input.MergeAttribute("value", item.Value);
    input.MergeAttribute("id", id);

    input.MergeAttributes(Html.GetUnobtrusiveValidationAttributes
        (fieldName, ViewData.ModelMetadata));

    if(item.Selected)
        input.MergeAttribute("checked", "checked");

    wrapper.InnerHtml += input.ToString(TagRenderMode.SelfClosing);


    var label = new TagBuilder("label"); // tried merging code around 
                                         // here but got it all wrong
    label.MergeAttribute("for", id);
    label.SetInnerText(item.Text);
    wrapper.InnerHtml += label;

    return new MvcHtmlString(wrapper.ToString());
}

正如我在代码中指出的那样,我尝试合并帮助程序代码,但无法正确使用它。

再次,感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

只需替换:

label.SetInnerText(item.Text);

使用:

label.InnerHtml = item.Text;