gpt4 book ai didi

c# - 我怎样才能更好地处理 ASP.NET MVC 中有关我的部分 View 的这种情况?

转载 作者:行者123 更新时间:2023-11-30 16:35:17 26 4
gpt4 key购买 nike

我有一个单独的 View ,它的左侧有一个菜单,右侧有一个容器,它是从几个部分 View 之一呈现的。

现在我遇到了类似下面“索引” View 的情况:

<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);
}

我意识到这种情况并不理想,但我需要这些部分保持部分观点。我正在对该 View 进行大量 ajax 调用,以使用各种局部 View 重新加载该“rightHandPane”。

我有一个 View “Index”,然后是加载“Index”的特定 Pane 的这些不同的局部 View 。我将 View 名称传递给 ViewModel,然后将这些 if-else 语句加载到适当的局部 View 中。

我还能怎么做呢?我即将添加 3 个局部 View ,这开始变得很痛苦。如果我根本不需要在我的 ViewModel 中维护我的 currentPane,我会更愿意。

我能做些什么来避免这种情况吗?我考虑过对公共(public)部分使用主视图,但我需要它是一个强类型的主视图,这在 ASP.NET MVC 中并不容易。

谢谢!

最佳答案

为什么不为每个操作使用单独的 View ,并使用一个母版页来处理所有公共(public)位?

您可以有一个母版页,每个部分都有一个占位符。

<div class="container">  
<div class="leftHandMenu">
<asp:ContentPlaceHolder ID="LeftHandMenuContainer" runat="server" />
</div>
<div class="rightHandPane">
<asp:ContentPlaceHolder ID="RightHandPaneContainer" runat="server" />
</div>
<asp:ContentPlaceHolder ID="FooterContainer" runat="server" />
</div>

然后在各个内容页中放入查看具体内容。

关于c# - 我怎样才能更好地处理 ASP.NET MVC 中有关我的部分 View 的这种情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1948092/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com