0

4 つの列 (HTML Div) を含むビューがあります。それぞれには、私の場所モデルに基づいて、同じデータの異なるサブセットが含まれています (名前プロパティを出力しているだけで、カテゴリ プロパティもあります - 両方の文字列)。

それぞれに適切なデータが含まれる 4 つのプレース モデルを含む ViewModel を作成できます。

マークアップを含む 4 つの文字列を渡すことができました (おそらく、マークアップとデータを混在させるのは適切ではありませんか?)。

ここでのベストプラクティスは何ですか?

(また、場所をカテゴリ別にアルファベット順に出力する必要があります。カテゴリが変更されたときに見出しを出力しますが、これは二次的な要件です)。

4

1 に答える 1

1

おそらく、最初のオプションである 4 を含む ViewModel を使用する必要がありますPlaceViewModel。オブジェクトとそのプロパティを操作する柔軟性を提供し、必要に応じて表示します。また、長期的にはビューのメンテナンスも改善されます。

@model PlacesViewModel

@foreach (var place in Model.Places)
{
    // Render your HTML column here 
}

HTML 文字列のセットを渡すと (2 番目のオプションで述べたように)、オブジェクトを有効な方法で変更、検査、解析、反復、または操作することができなくなります。jQuery など、ある種のクライアント側フレームワークを使用して文字列を操作する必要があります。

ただし、一連の を単純に反復したい場合はPlaceViewModel、それらのリストを渡すことを考えて、次のViewようにします。

@model List<PlaceViewModel>

@foreach (var place in Model)
{
    // Render your HTML column here
}

これにより、追加のクラスを作成する必要がなくなります。

モデルを名前 (またはその他のプロパティ) のアルファベット順に並べ替えるには、次のようにします。

@foreach (var place in Model.Places.OrderBy(place => place.Name))
{
    // Render your HTML column here 
}
于 2013-06-03T13:49:43.180 に答える