2010-08-26 7 views
5

Dans _Layout.cshtml fichier J'ai entrée suivante:actions d'enfants ne sont pas autorisés à effectuer des actions rediriger - erreur tout en travaillant avec ASP.NET MVC 2 et Razor

@Html.Action("LoadPagesStructure", "Page") 

intérieur PageController classe, LoadPagesStructure methos semble suivante:

[ChildActionOnly] /* this attribute indicates that an action should not 
        be invoked as a result of a user request (by url) */ 
public ActionResult LoadPagesStructure() 
{   
    ViewModel.Pages = new List<string>() {"page1", "page2", "page3"}; 
    return View(); 
} 

Enfin, mon LoadPagesStructure.cshtml vue ressemble ci-dessous:

@inherits System.Web.Mvc.WebViewPage<dynamic> 

<ul> 
    @foreach (var page in View.Pages) { 
    <li>   
     @Html.ActionLink(page, "Index", "Home") 
    </li> 
    } 
</ul> 

Malheureusement, une exception est levée après l'exécution:

System.InvalidOperationException: Child actions are not allowed to perform redirect actions. 

Quelle est la façon de créer des liens vers mes pages dynamiquement?

PS: Je sais que je peux le faire comme ça: <a href="@page">@page</a>. Néanmoins, je pense que ce n'est pas la bonne façon, car le contrôle du routage est impossible ici.

Cordialement

Répondre

3

Je pense que vous pourriez avoir besoin de retourner un PartialView pour votre action LoadPagesStructure().

Essayez ceci:

[ChildActionOnly] 
public ActionResult LoadPagesStructure() 
{   
    ViewModel.Pages = new List<string>() {"page1", "page2", "page3"}; 
    return PartialView(); 
}