2009-03-27 10 views

答えて

3

このような拡張機能のコードは次のとおりです。 ParameterDictionaryは自分のクラスであることに注意してください。 MVC拡張ではRouteValueDictionaryを代わりに使うと思いますが、それに頼るのは間違っているようですので、私はこの特定の目的のために独自のクラスを作成しました。 HtmlExtensionsクラスを含む名前空間を、これらの拡張機能を使用するビューにインポートする必要があります(Webプロジェクトにない場合は、そのクラスを含むプロジェクトへの参照を追加する必要があります)。

public static class HtmlExtensions 
{ 
    public static string Label(this HtmlHelper helper, 
           string labelFor, 
           string value, 
           object htmlAttributes) 
    { 
     TagBuilder labelBuilder = new TagBuilder("label"); 
     if (!string.IsNullOrEmpty(labelFor)) 
     { 
      labelBuilder.Attributes.Add("for", labelFor); 
     } 
     labelBuilder.MergeAttributes(new ParameterDictionary(htmlAttributes)); 
     labelBuilder.SetInnerText(value); 
     return labelBuilder.ToString(TagRenderMode.Normal); 
    }  
} 

使用法:

<%= Html.Label("Name", new { @class = "input-label" }) %> 
<%= Html.TextBox("Name") %> 
+0

こんにちは私はParameterDictionary =>見つからない参照 – Vikas

+0

上のエラーを取得していますはい。 ParameterDictionaryは私自身のクラスです。フレームワークからRouteValueDictionaryに置き換えることができます。 – tvanfosson

1

あなただけはしないだろうというマークアップ(スタイル/ CSS)内:

<label for="Name" ***here***>Name:</label> 
+1

確かに - 実際、私は通常やります。ただし、ヘルパー拡張は、ラベルの構築を一貫性とテスト可能にするために有効です。たとえば、あるクラスを適用したい場合は、拡張を変更して追加することができます。 – tvanfosson

関連する問題