asp.net mvc - Warum erhalte ich eine StackOverflowException, wenn ich Html.RenderAction in Razor verwende?

Translate

Ich konvertiere eine WebForms-Anwendung in Razor und alles funktioniert einwandfrei, außer wenn ich versuche, sie zu verwendenHtml.RenderAction. Wann immer ich das nenne, bekomme ich eineStackOverflowException. Hat jemand eine Idee, was dies verursachen könnte?

Die Vorlage für meine Aktion sieht folgendermaßen aus:

@model dynamic   

should be rendering this

In meiner Datei _Layout.cshtml rendere ich die Aktion folgendermaßen:

@{Html.RenderAction("MyPartialAction");}

Meine_ViewStart.cshtmlDatei sieht wie folgt aus:

@{
    this.Layout = "~/Views/Shared/_Layout.cshtml";
}
This question and all comments follow the "Attribution Required."

Alle Antworten

Translate

Das Problem ist, dass Ihre Vorlage für Ihre Aktion kein zu verwendendes Layout definiert. Daher wird automatisch die in der Datei _ViewStart.cshtml angegebene abgerufen. Dies führt tatsächlich dazu, dass die Datei _Layout.cshtml in sich selbst verschachtelt istAd infinitum. Daher dieStackOverflowException. Die Lösung ist einfach. Stellen Sie das Layout in Ihrer Aktionsvorlage auf einnull:

@model dynamic
@{
   Layout = null;
}
should be rendering this

Jetzt muss die Vorlage nicht mehr in eine Layoutdatei eingebettet werden, und alles funktioniert einwandfrei.

Quelle
Leave a Reply
You must be logged in to post a answer.
Über den Autor