【发布时间】:2023-03-19 11:33:01
【问题描述】:
我有一个剃须刀布局,这个布局分布在我的所有视图中。
直到今天,导航菜单还是(单独的控制器)在这个布局中。但是现在这个菜单有动态数据。而且我不能再将它保留在布局页面中。
那么我应该在每个视图中呈现这个导航菜单,还是有其他方法可以只制作一次并将数据传递给它?
这就是我在 Razor 布局中呈现导航菜单的方式:
@Html.Action("CommonMenu", "Navigation", new { area = "CityPage" })
在 CommonMenu 视图中,我有主页链接:
<li> @Html.ActionLink("Home", "Index", "Home", new { area = "CityPage", city = ViewBag.City, countryCode = ViewBag.CountryCode }, null)
然后我用那个菜单打开一页。当我点击家时,我希望去城市家的家(如英国、伦敦)。
但我可以从这个页面转到其他城市(例如 CH、苏黎世)。
现在我需要重新绑定整个导航菜单。
而且我不知道如果我以剃刀布局呈现菜单,我可以这样做吗?
更新
这就是我从一个城市页面转到另一个城市页面的方式:
@Html.ActionLink("Go To London", "Index", "Home", new { area = "CityPage", city = "London", countryCode = "UK" }, null)
当我点击此链接时,会调用 mu 'CommonMenu' 操作:
[ChildActionOnly]
public PartialViewResult CommonMenu(string countryCode, string city)
{...
但由于某种原因,此操作被调用了几次:
第一次两个值都为空。
第二次价值是英国,伦敦。
第三次为空。
这会导致我的页面中断。
【问题讨论】:
-
这个动态数据有什么问题?为什么你不能把它留在布局中?这是应该在每个视图上呈现的菜单的最佳位置。
-
我更新了问题。
-
我真的不明白问题出在哪里。为什么不能使用 Html.Action?
-
我用更多信息更新问题。由于某种原因,我的菜单操作被调用了几次,而 lat 调用返回空值。
-
您是说您的子操作被多次调用,但您没有显示有效调用此操作的代码(使用 Html.Action 助手)。所以在这种情况下帮助你会有点困难。
标签: asp.net-mvc asp.net-mvc-3 razor