2011-07-27 10 views
1

別のページに表示される統計ビューがあるとします。 任意のヘルパーがなければ、私は次のコードを使用してする必要があります。レンダリング部分ビューの複製を減らすためにHtmlHelper拡張メソッドを作成する必要がありますか?

@section Statistic{ 
    @Html.RenderAction("Index", "Statistic", new { id = Model.UserId }); 
} 

をしかし、ヘルパーを作成すると、私のような何か書くことができます:コントローラ、ACTIONNAMEかのパラメータに任意の将来の変更を

@section Statistic{ 
    @Html.Stats().For(Model.UserId); 
} 

を統計コントローラは、StatsHtmlHelperにある1つの場所で変更する必要があります

私の同僚の何人かは、このヘルパーはRenderActionを呼び出すだけでなく、存在してはいけないと不平を言う人もいます。あなたの意見は何ですか?

+0

これまでにヘルパーを見たことはありませんでした。 'Stats()'は何を返し、 'For(Model.UserId)'は何を返しますか?どうしてあなたは**ヘルパーメソッドを連鎖していますか?これはHTMLのLINQではありません。あなたの質問に答えるために - 私はあなたの同僚に同意します。単純な「ラッパー」ヘルパーのポイントは何ですか? – RPM1984

答えて

3

ヘルパーメソッドを作成すると、RenderActionやActionLinkなどのメソッドを呼び出す複雑さが軽減され、「マジック文字列」を取り除くことができます。しかし、異なるアクションごとに、あなたのアプローチ(!)で別のヘルパーを作成しなければなりません。これは他の複雑さを生むかもしれません。統計のためにそれを行う場合、なぜあなたのアプリケーションの他のすべてのアクションのためにそれをしないでしょうか?私はT4MVCRenderAction, ActionLinkのオーバーロードを使用して、ActionResultを受け取ります。それによって、コントローラ、アクション、またはパラメータシグネチャが変更されたときに、魔法の文字列を取り除き、コンパイル時の例外を取得します。コンパイラで正確な場所にエラーがある場合は、それらを修正するのが簡単です。 T4MVCを使用すると、統計レンダリングラインは次のようになります。

@{Html.RenderAction(MVC.Index.Statistic(Model.UserId));} 

そしてT4MVCメソッドは一般的なアプローチです。あなたは、プロジェクト全体のあらゆるアクションにそれらを単に使うことができます。

関連する問題