2014-06-26 9 views
18

Ich versuche, eine Teilansicht zum Rendern mit Razor in MVC5 zu bekommen. Als ichRendern von Teilansichten mit Razor in MVC5

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

verwenden erhalte ich den Parser-Fehler:

Unexpected "{" after "@" character. Once inside the body of a code block (@if {}, @{}, etc.) you do not need to use "@{" to switch to code.

Wenn ich die {} entfernen, das heißt:

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

Ich erhalte die Kompilierungsfehler

Cannot implicitly convert type 'void' to 'object'.

Was mache ich? Falsch?

Antwort

27

Sie haben den Rahmen dieser Code geschrieben, aber dieser Fehler nur wirklich passiert, wenn Sie @ direkt in einem Codeblock ohne HTML-Umhüllungen verwenden. Zum Beispiel:

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

Würden Sie den Fehler geben, während:

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

in Ordnung sein würde. Man könnte es auch für Html.RenderPartial, die @ einschließlich vollständig durch nur das Entfernen des Codeblock lösen:

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

Gut entdeckt, war es in einer @foreach eingewickelt {}! – Mourndark

+0

nette Antwort, Detail war viel besser als meins :) –

3

können Sie den Code, der Ihr RenderPartial umgibt, anzeigen? Ich schätze, Sie sind in einer Schleife, wenn Block, oder eine andere Art von Codeblock. Wenn ja, würde rufen Sie einfach

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

Das ist falsch:

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

Das ist richtig:

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

Der Parsing-Fehler könnte durch die Teilansicht Inhalt verursacht werden. Wenn Sie beispielsweise eine E-Mail-Adresse haben, vergewissern Sie sich, dass Sie @@ verwenden, um das @ -Zeichen ordnungsgemäß zu entfernen.

Unexpected "{" after "@" character. Once inside the body of a code block (@if {}, @{}, etc.) you do not need to use "@{" to switch to code.

+0

kann es auch sein, weil der Code-Block (Pakt mit dem @ singen) ist nach und anderen Code-Block (foreach wenn etc.) Wenn dies der Fall ist, sollten Sie nicht ein @ vor dem Code-Block –

+0

@ Believe2014 setzen In meinem Fall gibt es eine Indexansicht, ich habe ein Teilsichtsuchformular erstellt, das ich in die Indexansicht von @ {Html einfügen möchte.RenderPartial ("TestOne"); }, wenn ich TestOne es selbst es funktioniert, aber wenn ich Index ausführen gibt es Fehler, Das Modell Element in das Wörterbuch übergeben ist vom Typ 'PagedList.PagedList' ..... – SAR

17

Sie auch @Html.Partial("~/View/Home/myview.cshtml")

Es gibt Zeichenfolge während Html.RenderPartial Anrufe intern schreiben und void zurückgibt verwenden.

+0

IMHO das ist die richtige/beste Antwort auf die Frage. – Form

0

Bitte Code überprüfen, könnten Sie diesen Fehler bekommen, weil Sie diesen Code verwenden: @{ Html.RenderPartial("ViewName", model); } innerhalb jeder anderen @{} Klausel. Bitte lesen Sie die Fehlermeldung, die Sie im Browser erhalten, noch einmal sorgfältig durch. Sie müssen nicht @{} verwenden, um auf Code umzuschalten, da Sie bereits darin sind. Entfernen Sie einfach @{ und } und Sie sollten es richtig funktionieren lassen.

Verwandte Themen