2015-11-08 1 views
0

Je rends un widget de menu à l'intérieur de l'en-tête d'une présentation principale.Html.Action rend le menu partiel à l'intérieur avec différentes routes de liens

_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"); 
    } 
} 

T son est la sortie rendue dans le navigateur

enter image description here

Pourquoi le rendu des hyperliens un nom de contrôleur modifié? Encore plus ces liens appliqués le nom du contrôleur du widget lui-même => "Menu" Pourquoi est-ce?

+1

Essayez @ Html.ActionLink ("Projets", "Index", "Projets") dans votre FullMenu.cshtml –

+2

ok ces liens ont travaillé avant , puisque je les mets dans le "widget" je dois déclarer l'itinéraire complet:

  • @ Html.ActionLink ("Projets", "Index", "Projets", nouveau {area = "Application"}, nouveau {})
  • , merci pour l'indice! – Elisabeth

    +0

    Content de t'avoir aidé –

    Répondre

    1

    Vous devez déclarer le contrôleur aussi dans l'itinéraire de menu

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