asp.net mvc c # выделит выбранный пункт меню, обнаружив маршрут в меню частичного просмотра - PullRequest
1 голос
/ 03 апреля 2011

Просто подумал, что немного верну, так как я нашел здесь много решений для 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», чтобы выделить пункт меню, который соответствует «родительская страница, то есть страница, которую пользователь просматривает в основной части содержимого мастера.

...