そのため、レガシーデータソースから6つのパーシャルを持つマスタービューに複数のテーブルからプルするMVC3プロジェクトに取り組んでいます。すべての子ビューのデータを含むテーブルが1つあるため、それをセッションデータに保存してから、残りの子ビューに必要な他のデータを入力することにしました。
最初にこれを実行しようとしたとき、セッションデータへのnull参照例外が発生していました。私は解決策を考え出しましたが、それは非常に不格好なようで、ベストプラクティス/不要な状態の導入ではないと思います。
従うべき関連コード:
これは、メインコントローラーにあるものです。
public ActionResult PolicyView(string PolicyID)
{
IPolicyHolder phdata = new PolicyHolderData();
Polmast policy = phdata.GetPolicyFromUV(PolicyID);
ViewBag.FullName = policy.FULLNAME;
ViewBag.PolicyID = PolicyID;
Session["polmast"] = policy;
return View("PolicyView");
}
次に、メインビューで、部分的な子ビューへのリンクの1つを示します。
<div id="Billing">
@{ Html.RenderAction("Billing", Session["polmast"] ); }
</div>
子コントローラーの場合:
public ActionResult Billing(object sessiondata)
{
return PartialView("_Billing", sessiondata);
}
そして子ビューで:
@{var polmast = (Polmast)Session["polmast"];}
**snip**
<table id="premiumsgrid" class="display" border="1"
cellpadding="0" cellspacing="0" width="50%">
<thead>
<tr>
<th>Annual</th>
<th>Semi-Annual</th>
<th>Quarterly</th>
<th>Monthly</th>
</tr>
</thead>
<tbody>
<tr>
<td>@polmast.PAN</td>
<td>@polmast.PSA</td>
<td>@polmast.PQT</td>
<td>@polmast.PMO</td>
</tr>
</tbody>
</table>