Метка с содержанием HTML - PullRequest
0 голосов
/ 21 июля 2011

Как мне создать строго типизированную метку с содержимым HTML внутри в MVC3?

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

Я проверил код в валидаторе w3c, и он кажется верным, есть ли способ сделатьэто?

Спасибо.

1 Ответ

2 голосов
/ 21 июля 2011

Вы можете использовать пользовательский помощник HTML с TagBuilder.

Как то так (не проверено);

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")
...