2011-07-21 132 views
0

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

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

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

谢谢。

回答

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%,但你明白了。我不知道如何从模型中拉出“为了”价值。您可能需要FromLambdaExpression或其他参数。

而且使用这样的:

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

我看,这是很酷。你知道如何设置“value”属性,以便我可以在有验证问题的地方将值设置回来吗?谢谢。 – vtortola

+2

它很好用,我把最后一行改为MvcHtmlString.Create()但是,你的想法很好用!太感谢了。 – vtortola