我有一个侧面板菜单,在我的asp.net mvc 4 app c#中调用不同的控制器方法。
根据输入的控制器,有一个顶级菜单需要更改。
我想知道更改顶部导航的好方法是什么,具体取决于按下操作的侧导航。
例如,如果我按左侧菜单上的Admin,则顶部导航将仅显示管理员选项。如果按“联系人”,则顶部菜单将更改为显示联系人的crud方法。
任何回复都会很棒
由于
答案 0 :(得分:0)
在考虑了这个问题之后,我决定采用以下实现:我创建了两个部分视图,这些视图具有不同的菜单项,这取决于选择哪个控制器。
我采取的步骤:
使用一个属性为我的布局创建了一个ViewModel:
公共类LayoutViewModel { private string _menuNav;
public string MenuNav
{
get { return _menuNav; }
set { _menuNav = value != null ? value : "_HomeMenu"; }
}
}
然后在我的homeviewmodel上添加了一个基类(注意没有其他类型被定义为用于演示目的)
public class HomeIndexViewModel:LayoutViewModel {
}
创建一个属性,允许我将这个新属性添加到控制器,以便获得正确的导航局部视图。
public class MenuActionAttribute:ActionFilterAttribute { 私有字符串_MenuName;
public MenuActionAttribute(string MenuName)
{
_MenuName = MenuName;
}
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
var lvm = filterContext.Controller.ViewData.Model as LayoutViewModel;
lvm.MenuNav = _MenuName;
}
}
为控制器操作方法添加了属性
public class HomeController:Controller { [MenuAction( “_ HomeMenu”)] 公共ActionResult索引() { var hm = new HomeIndexViewModel();
return View(hm);
}
[MenuAction("_HRMenu")]
public ActionResult About()
{
var hm = new HomeIndexViewModel();
return View(hm);
}
}
希望这有帮助。
还有其他方法可以做到这一点,但所有人都有他们的专业和骗局。如果它不能正常工作,只需做出决定并准备好改变。