2011-11-14 8 views
3

私はかなり長い間これをスタブルリングしています。簡単なフィルタとツールバーの管理のためにカスタムmvc3 htmlヘルパーを作成する必要があります。mvc3でカスタムフィルターツールバーのhtmlヘルパーを作成するには

このヘルパーは、以下のようなものか、類似したものでなければなりません。私がやりたいことは、ツールバーのボタンとフィルターフィールドを与えることができ、ツールバーとフィルターフォームを生成するヘルパーを持つことです。私はこれを達成できる方法のasp.net MVC

@Html.Toolbar(x => { 
    x.AddFilterButton(); 
    x.AddButton("Naujas"); 
    x.AddDropDownList(); 
    }, 
    @<text> 
    @Html.EditorFor(Model.ListFilter.Name) 
    Filter 
    ResetFilter 
    </text>, 
    filterVisible: false) 

にはかなり新しいですので

私はただ、それを把握することはできませんか?どんな助けも非常に評価されます。確かにありがとう。このような

+1

私はあなたを手伝いたいと思います。しかし、あなたの質問にはさまざまなものが混在しているので、答えるのに1時間必要です;あなたのラムダ(x => {x.Add(...))の部分では、表現木に慣れるべきです。残りは習得するのが難しくありません。 mvc3、mvcContrib、またはtelerikのソースをダウンロードすることをお勧めします。彼らはグリッドやその他のコントロールでこれを持っていました。 – dknaack

答えて

2

何か:

public static class ToolbarExtensions { 
    public static Toolbar Toolbar<T>(this HtmlHelper<T> html) { 
     return new Toolbar(); 
    } 
} 

public class Toolbar : IHtmlString { 
    public string ToHtmlString() { /* build your HTML off the state here */ } 

    public Toolbar AddButton(string label) { 
     /* build up state here */ 

     return this; 
    } 
} 

構文これで、代わりにラムダの、少し異なったものになり、次のようになります。

@Html.Toolbar().AddButton("Button 1").AddButton("Button 2") 

しかし、あなたは簡単に使用するように変更することができますToolbarメソッド呼び出しではなく、ラムダのチェーンオブジェクトです。

IHtmlStringインターフェイスは、ViewEngineに、オブジェクトが出現したときに生のHTMLとして出力するように指示します。連鎖は、オブジェクトの状態を変更した後、メソッド内の現在のインスタンスを返すことによって実現されます。

関連する問題