2012-02-15 28 views
1

カスタムHtmlヘルパーをビルドしてサブセクションに入れる方法はありますか? I:Razor HtmlHelpers with sub-sections?

@Html.Buttons.Gray 
@Html.Buttons.Blue 
@Html.Tables.2Columns 
@Html.Tables.3Columns 

ありがとう。

答えて

1

ヘルパーは単なる拡張メソッドです。したがって、オブジェクトを返すヘルパーを作成して、メソッド呼び出しを連鎖させることができます。 @Html.Button("Text").Grey()

public ButtonHelper 
{ 
    public string Text {get; set;} 
    public MvcHtmlString Grey() 
    { 
     return MvcHtmlString.Create("<button class='grey'>"+ Text +"</button>"); 
    } 
} 

public static class Buttons 
{ 
    public static ButtonHelper Button(this HtmlHelper, string text) 
    { 
     return new ButtonHelper{Text = text}; 
    } 
} 
+0

素晴らしいです!ありがとうございました。 – Saxman

1

私はそういうことはできないと思います。列挙型を作成し、基準色にそれを使用するので、同じよう:

public enum ButtonColor 
{ 
    Blue = 0x1B1BE0, 
    Gray = 0xBEBECC 
}; 

public static class Extensions 
{ 
    public static MvcHtmlString Button(this HtmlHelper htmlHelper, string Value, ButtonColor buttonColor) 
    { 
     string renderButton = 
      string.Format(
       @"<input type=""button"" value=""{0}"" style=""background-color: {1}"" />", 
       Value, 
       buttonColor.ToString() 
      ); 

     return MvcHtmlString.Create(renderButton); 
    } 
} 

あなたがテーブルのためのものと同じタイプを行うことができますが、これはあなたの一般的なアイデアを与える必要があります。これは通常のヘルパー拡張メソッドですが、目的の最終結果を得るためにパラメータとしてenum valをとります。

0

あなたは(ボタンを回避したい場合)関数で、カスタムのHtmlHelperを作成することで、このような何かを達成する方法についてはhttp://haacked.com/archive/2011/02/21/changing-base-type-of-a-razor-view.aspxを参照してください。@MyAppHtml.Buttons.Gray

あなたがあれば代わりに代わりのHtmlHelper上書きすることができるかもしれません厳密に欲しい@Html.Buttons.Gray

関連する問題