it-swarm.com.de

Rendern von Teilansichten mit Razor in MVC5

Ich versuche, eine teilweise Ansicht zu erhalten, um mit Razor in MVC5 zu rendern. Wenn ich benutze

@{ Html.RenderPartial("ViewName", model); }

Ich erhalte den Parser-Fehler:

Unerwartetes "{" nach dem Zeichen "@". Sobald Sie sich im Körper eines Codeblocks befinden (@if {}, @ {} usw.), müssen Sie nicht mit "@ {" in den Code wechseln.

Wenn ich den {} entferne, d. H .:

@Html.RenderPartial("ViewName", model);

Ich bekomme den Kompilierungsfehler

Der Typ 'void' kann nicht implizit in 'object' konvertiert werden.

Was mache ich falsch?

19
Mourndark

Sie haben den Kontext dieses Codes nicht gepostet. Dieser Fehler tritt jedoch nur dann auf, wenn Sie @ direkt in einem Codeblock ohne HTML-Wrapper verwenden. Zum Beispiel:

@if (true) {
    @{ Html.RenderPartial(...); }
}

Würde Ihnen den Fehler geben, während:

@if (true) {
    <div>
        @{ Html.RenderPartial(...); }
    </div>
}

Wäre in Ordnung. Sie können es auch lösen, indem Sie einfach den Codeblock für Html.RenderPartial vollständig entfernen, einschließlich @:

@if (true) {
    Html.RenderPartial(...);
}
29
Chris Pratt

Sie können auch @Html.Partial("~/View/Home/myview.cshtml") verwenden.

Es gibt den String zurück, während Html.RenderPartial Write intern aufruft, und gibt void zurück.

19
Developer

Das ist falsch:

@Html.RenderPartial("ViewName", model);

Das ist richtig:

@{ Html.RenderPartial("ViewName", model);  }

Der Analysefehler kann durch den Inhalt der Teilansicht verursacht werden. Wenn Sie beispielsweise eine E-Mail-Adresse haben, stellen Sie sicher, dass Sie @@ verwenden, um das @ -Zeichen ordnungsgemäß zu deaktivieren.

Unerwartetes "{" nach dem Zeichen "@". Einmal im Körper eines Codes block (@if {}, @ {} usw.) Sie müssen nicht mit "@ {" zu .__ wechseln. Code.

9
Believe2014

können Sie den Code anzeigen, der Ihr RenderPartial umgibt? Ich vermute, Sie befinden sich in einer Schleife, ob Block oder eine andere Art von Codeblock. Wenn ja, würden Sie einfach anrufen 

Html.RenderPartial("ViewName", model);
3
Anthony Shaw

Verwenden Sie @Html.Partial(). Es hat drei Überlastungen, übergeben Sie die Parameter entsprechend Ihrer Anforderung.

0
Deepak Singla

Bitte überprüfen Sie Ihren Code. Möglicherweise wird dieser Fehler angezeigt, weil Sie diesen Code verwenden: @{ Html.RenderPartial("ViewName", model); } In einer anderen @{}-Klausel. Bitte lesen Sie die im Browser angezeigte Fehlermeldung erneut sorgfältig durch. Sie müssen nicht @{} verwenden, um zum Code zu wechseln, da Sie sich bereits im Code befinden. Entfernen Sie einfach @{ und }.

0
Alex Leyva