我在该布局中有一个布局页面我使用了局部视图,局部视图包含我构建的菜单功能,我将菜单拆分为局部视图以确保它易于维护。菜单被故意放置在布局中,因为它在每个页面中都使用,但是菜单中有条件元素,因此某些选项仅出现在某些页面上。
我偶然发现了对我前进的问题,菜单使用 ajax 调用来呈现包含内容的部分视图(减少页面加载)我只是在一个包含公司的页面上工作,公司包含联系人列表,单击时菜单选项应显示联系人列表。我已经加载了公司模式下的联系人列表,但是!我无法从应该呈现联系人列表的新局部视图访问它,因为菜单是包含在布局页面中的局部视图,因此无法接受模型,因此我无法将模型传递到局部视图中我正在尝试加载,因为菜单部分视图位于布局页面中。
这是一个棘手的情况,我显然可以更改布局以呈现一个包含菜单的新部分,这样我就可以将一个新的视图模型传递给它,但是我构建的每个页面都需要引用菜单(真是个害虫!)我必须在这里遗漏一些东西(考虑到这是我可能的第一个 MVC3 应用程序)。有什么建议么?
编辑:我自己更进一步,简而言之,我的布局页面将始终能够访问使用它的页面模型,因此包含菜单的部分视图也可以访问该数据。我在我的菜单部分视图中编写了一些条件逻辑来检查页面,然后根据需要传入数据。
<div class="menu">
<ul>
<li><a href="@Url.Action("Create", "Contact")">New Contact </li>
<li><a href="@Url.Action("Index", "Contact")">Contact List </a></li>
</ul>
@if (Request.Url.PathAndQuery.Contains("/Contact/Details/"))
{
<ul>
<li>@Html.ActionLink("New Activity", "Create", "Activity", new { companyid = 0, contactid = Model.contact.id }, null)</li>
</ul>
}
</div>
以上是菜单部分视图的一个小示例,但包含一个示例,其中菜单是为联系人/详细信息页面构建的,并且能够传入model.contact.id。它的工作原理是我的菜单和布局没有明确包含模型,但感觉不是很整洁。