2015-11-08 8 views
0

Я визуализирую виджет меню внутри заголовка макета.Html.Action отображает частичное меню внутри с различными маршрутами ссылок

_Layout.cshtml

@Html.Action("Menu", "Menu", new { area = "Application" }) 

FullMenu.cshtml

<div class="navbar-collapse collapse"> 
    <ul class="nav navbar-nav"> 
     <li><a href='#'><span class='glyphicon glyphicon-education'></span></a></li> 
     <li>@Html.ActionLink("Projects", "Index")</li> 
     <li>@Html.ActionLink("Tests", "Index" })</li> 
    </ul> 
    @Html.Partial("_LoginPartial") 
</div> 

MenuController.cs

public class MenuController : Controller 
{ 
    [ChildActionOnly] 
    public ActionResult Menu() 
    { 
     string controller = (string) ControllerContext.ParentActionViewContext.RouteData.Values["controller"]; 
     if (controller == "Projects") 
     { 
      return PartialView("StartMenu"); 
     } 
     else 
      return PartialView("FullMenu"); 
    } 
} 

Т его это просчитанный выход в браузере

enter image description here

Почему Визуализированных гиперссылка модифицированного имени контроллера? Более того, эти ссылки применяли имя контроллера самого виджета => «Меню» Почему это?

+1

Попробуйте @ Html.ActionLink («Проекты», «Индекс», «Проекты») в вашем FullMenu.cshtml –

+2

ОК эти ссылки работали до того , так как я помещал их в «виджет», мне нужно объявить полный маршрут:

  • @ Html.ActionLink («Проекты», «Индекс», «Проекты», новый {область = «Приложение»}, новый {})
  • , спасибо за подсказку! – Elisabeth

    +0

    Рад, что помогло –

    ответ

    1

    Вы должны объявить контроллер тоже в маршруте меню

    @Html.ActionLink("Projects", "Index", "Projects")