2011-03-16 13 views
5

ビューの途中でいくつかのHTMLチャンクのどれをレンダリングするかを決定する条件付きロジックが必要な大きなビューがあります。私は出力するhtmlを決定するいくつかの異なる値を持つことができる私のモデルのプロパティを持っています。mvcビューの条件付きロジックとhtmlhelperとアクション

私は通常、HTMLヘルパーに条件付きロジックを入れますが、各出力がhtmlの公正な塊であるとすれば、これらをC#ファイルでエスケープすることは素晴らしいとは思いません。私はまた、ロジックをアクションに入れて別のビューをレンダリングすることもできますが、ビューの大部分が同じであることを考えると、これはどちらかと言えません。だから私は、醜い(明らかにテストできない)ようにも見える私のビュー(または部分?)の複数のifステートメントが残されています。

これを行う最善の方法は何ですか?

(私はケースにMVC3を使用しています、私が使用できる新しいファンキーなものがある!)このような

+0

あなたはカミソリを使用している場合、彼らは...彼らはないかもしれない、あなたの状況に合わせかもしれない「カミソリ宣言HTMLヘルパー」をグーグルでみてください。しかし、彼らの新しいとファンキー;-) – Charlino

答えて

3

私は普通に別々の視覚的なチャンクを置きます自分自身の部分的な部分。次に、私のビューは条件付きでHtml.Partialで各部分を呼び出します。これは、あなたが沸騰からの主なビューを維持します。

一般に、私は、複数の要素を含むHtml.Helpersを回避しようとします。以下のような

何か:

@if(Model.HasA) 
{ 
    @Html.Partial("widgetdetails-hasa") 
} 

@if(Model.HasB) 
{ 
    @Html.Partial("widgetdetails-hasb") 
} 
// etc 
+0

私は同意する - 複数の要素を持つヘルパーヘルパーは部分ページと呼ばれます;-) – richb01

4

IMHOロジックは、ビューの罰金です:

@if (Model.ShouldShowSomeSection) 
{ 
    ... some large chunk of HTML 
} 
else 
{ 
    ... some alternative 
} 
関連する問題