1

只是想我会回馈一点,因为我在 stackoverflow 上找到了许多解决方案,但尚未发布答案(作为 asp.net mvc 新手):

将菜单系统实现为站点母版页呈现的部分视图后,我希望菜单的控制器突出显示“选定”菜单项,让用户了解他们在站点上的位置。问题是当菜单被渲染时,当前的路由数据是菜单本身的数据,而不是主内容页面的数据。因此,菜单控制器如何知道要突出显示哪个菜单项?我认为我的解决方案非常简洁,但也许您会有其他建议:

public class NavController : Controller
{
    private string parentAction { get; set; }
    private string parentController { get; set; }

    protected override void OnActionExecuting(ActionExecutingContext ctx)
    {
        base.OnActionExecuting(ctx);
        parentAction = ctx.ParentActionViewContext.Controller.ControllerContext.RouteData.Values["action"].ToString();
        parentController = ctx.ParentActionViewContext.Controller.ControllerContext.RouteData.Values["controller"].ToString();
    }

这个菜单生成类现在可以使用“parentAction”和“parentController”来突出显示对应于“父”页面的菜单项,即用户在主页面的主要内容部分中查看的页面。

4

0 回答 0