5 Stimmen

Child Actions dürfen keine Redirect-Aktionen durchführen - Fehler bei der Arbeit mit ASP.NET MVC 2 und Razor

Unter _Layout.cshtml Datei habe ich folgenden Eintrag:

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

Innerhalb PageController Klasse, LoadPagesStructure methos schaut nach:

[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();
}

Endlich, mein LoadPagesStructure.cshtml-Ansicht sieht wie folgt aus:

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

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

Leider wird nach der Ausführung eine Ausnahme ausgelöst:

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

Wie kann ich Links zu meinen Seiten dynamisch erstellen?

PS: Ich weiß, dass ich das auch so machen kann: <a href="@page">@page</a> . Ich denke aber, dass dies nicht der richtige Weg ist, da eine Kontrolle der Streckenführung hier unmöglich ist.

Mit freundlichen Grüßen

3voto

Charlino Punkte 15622

Ich glaube, Sie müssen eine PartialView für Ihre LoadPagesStructure() Aktion.

Versuchen Sie dies:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X