私は3つのカテゴリを表すことができるモデルを持っています。私は私の見解では、関連するフィールドを持つ各カテゴリの3つのテーブルを作成したい。私はこれについては、各カテゴリのビューモデルで部分的なビューを使用する必要があると思います。ビューモデルを部分ビューにバインド
私のメインモデルは3つのサブビューモデル(Realty、Auto、Service)を持つ "Ad"です。私は私のホームコントローラ上で不動産のアクションを実装する方法をここで 例:次に
public ActionResult Realty()
{
var ads = db.Ads.Include(a => a.Realty);
var vm = new List<RealtyViewModel>();
foreach (var ad in ads)
{
vm.Add(new RealtyViewModel
{
Title = ad.Title,
Descirpiton = ad.Descirpiton,
Type = ad.Realty.Type,
NumberOfRooms = ad.Realty.NumberOfRooms
});
}
return PartialView(vm);
}
私の部分図は、次のようになります。私のインデックスページで次に
@model IEnumerable<OGAS.Areas.Category.ViewModels.RealtyViewModel>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Title)
</th>
<th>
@Html.DisplayNameFor(model => model.Type)
</th>
<th>
@Html.DisplayNameFor(model => model.Descirpiton)
</th>
<th>
@Html.DisplayNameFor(model => model.NumberOfRooms)
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Title)
</td>
<td>
@Html.DisplayFor(modelItem => item.Type)
</td>
<td>
@Html.DisplayFor(modelItem => item.Descirpiton)
</td>
<td>
@Html.DisplayFor(modelItem => item.NumberOfRooms)
</td>
</tr>
}
</table>
(任意のモデルを使用せずに)、Iこのような部分的なビューを呼び出します。
@{Html.RenderPartial("Realty");}
しかし、私は次のエラー取得しています:
を3210「System.NullReferenceException」種類の例外は、このアプローチは、(3つのVMSを呼び出す)良ければはい、これを実装する方法場合は、アドバイスしてもらえApp_Web_gdyh352c.dllで発生したが、ユーザーコード
で処理されていませんでしたか?
ありがとうございました。
大きな感謝、これは動作します。私は疑問を持っているとアドバイスできますか?このアプローチはパフォーマンスの観点からは良いですか?3つの異なるVMで3つのHtml.Actionメソッドを呼び出すことになります。 –
MVCの非常に一般的なアプローチです。あなたはまだ同じデータをロードしています - コントローラからある時点で呼び出す必要があります。もう1つの選択肢は、メインビューの1つの大きなビューモデルを作成し、たとえば、 '@Html.Partial(" _ partialName "、model.Realty)' –