带有HTML内容的标签

时间:2011-07-21 09:13:58

标签: html asp.net-mvc-3 html-helper

如何在MVC3中创建包含HTML内容的强类型标签?

<label for="nnn"><input type="checkbox" id="nnn" />Herp</label>

我已经检查了w3c验证器中的代码,它似乎是有效的,有没有办法做到这一点?

感谢。

1 个答案:

答案 0 :(得分:2)

您可以使用TagBuilder的自定义HTML帮助程序。

像这样(未经测试);

public static MvcHtmlString LabelCheckBoxFor<TModel>(
   this HtmlHelper<TModel> htmlHelper, 
   Expression<Func<TModel,bool>> expression,
   string text)
{
   var labelTag = new TagBuilder("label");
   labelTag.MergeAttribute("for", "nnn"); 
   labelTag.InnerHtml = htmlHelper.CheckBoxFor(expression) + text;
   return labelTag.ToString(TagRenderMode.SelfClosing);
}

可能不是100%,但你明白了。我不确定如何从模型中提取“for”值。您可能需要FromLambdaExpression或其他参数。

并像这样使用它:

@Html.LabelCheckBoxFor(model => model.SomeField, "Herp")