2011-07-21 9 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

、それはかなりクールです。検証の問題がある場所で値を設定できるように、「値」属性を設定するにはどうすればよいですか?ありがとう。 – vtortola

+2

素晴らしいですが、私は最後の行をMvcHtmlString.Create()に変更しましたが、あなたのアイデアは素晴らしいです!感謝万円。 – vtortola

関連する問題