Teilansicht mit dynamischem Modell in Razor View Engine und ASP.NET MVC 3 rendern
Wenn ich versuche, mit der Darstellung einer Teilansicht, deren Modell-Typ angegeben als:
@model dynamic
durch den folgenden code:
@{Html.RenderPartial("PartialView", Model.UserProfile);}
Bekomme ich die folgende exception:
'System.Web.Mvc.HtmlHelper<dynamic>' has no applicable method named 'RenderPartial' but appears to have an extension method by that name. Extension methods cannot be dynamically dispatched. Consider casting the dynamic arguments or calling the extension method without the extension method syntax.
Jedoch der gleiche code in einer .aspx-Datei funktioniert einwandfrei. Irgendwelche Gedanken?
InformationsquelleAutor der Frage Diego | 2010-10-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur die Antwort gefunden, es scheint, dass die Ansicht, wo ich war, platzieren die RenderPartial code hatte ein dynamisches Modell, und damit, MVC konnte nicht wählen Sie die richtige Methode zu verwenden. Gießen Sie das Modell in die RenderPartial rufen, um die richtige Art das Problem behoben wurde.
Quelle: Die Verwendung Von Html.RenderPartial() in ascx-Dateien
InformationsquelleAutor der Antwort Diego
Anstelle der Modell-in die RenderPartial nennen, und da bist du mit razor, können Sie ändern Sie die erste Zeile in der Ansicht von
zu
Dies hat den Vorteil der Arbeit auf jeden
@Html.Partial
rufen Sie in der Ansicht, und gibt Ihnen auch intellisense für die Eigenschaften.InformationsquelleAutor der Antwort juan
Kann auch aufgerufen werden, wie
InformationsquelleAutor der Antwort Tom
Es ist ein weiterer Grund, dass diese geworfen werden kann, auch wenn Sie nicht mit dem dynamischen/ExpandoObject. Wenn Sie dabei eine Schleife, wie folgt aus:
In diesem Fall, "var" statt mit der Typdeklaration wird, werfen die gleichen Fehler, trotz der Tatsache, dass RootFolder ist vom Typ "Ordner. Durch ändern der var, der tatsächlichen Art, das problem geht Weg.
InformationsquelleAutor der Antwort J Wynia
Hier ist ein Weg, um pass ein dynamisches Objekt auf einen Blick (oder teilweise Blick)
Fügen Sie die folgende Klasse, die irgendwo in Ihrer Lösung (verwenden Sie den System-namespace, so dass Ihr bereit, zu verwenden, ohne dass Sie irgendwelche Referenzen) -
Wenn Sie senden Sie das Modell zu der Ansicht, konvertieren Sie es in Expando :
Cheers
InformationsquelleAutor der Antwort Segev -CJ- Shmueli
Ich hatte das gleiche problem und in meinem Fall ist dies, was ich Tat
und in Teilansicht
InformationsquelleAutor der Antwort RousseauAlexandre