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