左側にメニューがあり、右側にコンテナがあり、いくつかの部分ビューの1つからレンダリングされる単一のビューがあります。
現在、次の「インデックス」ビューのような状況に陥っています。
<div class="container">
<div class="leftHandMenu">
// various dynamic menu items
</div>
<div class="rightHandPane">
<% if (Model.CurrentPane == "Sent") { %>
<% Html.RenderPartialView("SentPartial", Model.SomeData); %>
<% } else if (Model.CurrentPane == "Inbox") { %>
<% Html.RenderPartialView("InboxPartial", Model.SomeData); %>
<% } else if (Model.CurrentPane == "Alerts") { %>
<% Html.RenderPartialView("AlertsPartial", Model.SomeData); %>
<% } %>
</div>
// various other common view items
</div>
次のアクションを使用します。
public ActionResult Inbox(int? page)
{
MessageListViewModel viewData = new MessageListViewModel();
viewData.SomeData = messageService.getInboxMessages(page.HasValue ? page.Value : 0);
viewData.CurrentPane = "Inbox";
return View("Index", viewData);
}
public ActionResult Alerts(int? page)
{
MessageListViewModel viewData = new MessageListViewModel();
viewData.SomeData = messageService.getAlertMessages(page.HasValue ? page.Value : 0);
viewData.CurrentPane = "Alerts";
return View("Index", viewData);
}
public ActionResult Sent(int? page)
{
MessageListViewModel viewData = new MessageListViewModel();
viewData.SomeData = messageService.getSentMessages(page.HasValue ? page.Value : 0);
viewData.CurrentPane = "Sent";
return View("Index", viewData);
}
この状況が理想的ではないことは理解していますが、これらの部分を部分的なビューのままにしておく必要があります。このビューで一連の ajax 呼び出しを行って、その「rightHandPane」をさまざまな部分ビューでリロードしています。
単一のビュー「インデックス」と、「インデックス」の特定のペインをロードするこれらのさまざまな部分ビューがあります。ビュー名を ViewModel に渡し、これらの if-else ステートメントを適切な部分ビューにロードします。
他にどうすればこれを行うことができますか?さらに 3 つの部分ビューを追加しようとしていますが、これが面倒になり始めています。ViewModel で currentPane を維持する必要がまったくない方がいいと思います。
この状況を一緒に回避するために私にできることはありますか? 共通部分にマスター ビューを使用することを検討しましたが、厳密に型指定されたマスター ビューである必要があり、ASP.NET MVC では簡単ではありません。
ありがとう!