web-dev-qa-db-fra.com

Rendre des vues partielles avec Razor dans MVC5

J'essaie d'obtenir une vue partielle à utiliser Razor dans MVC5. Quand j'utilise

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

Je reçois l'erreur de l'analyseur:

Caractère "{" après "@" inattendu. Une fois dans le corps d'un bloc de code (@if {}, @ {}, etc.), vous n'avez pas besoin d'utiliser "@ {" pour passer au code.

Lorsque je supprime le {}, c’est-à-dire:

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

Je reçois l'erreur de compilation

Impossible de convertir implicitement le type 'void' en 'object'.

Qu'est-ce que je fais mal?

19
Mourndark

Vous n'avez pas posté le contexte de ce code, mais cette erreur ne survient que lorsque vous utilisez @ directement dans un bloc de code sans aucun code HTML. Par exemple:

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

Vous donnerait l'erreur, alors que:

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

Serait bien. Vous pouvez également le résoudre en supprimant simplement le bloc de code pour Html.RenderPartial, y compris le @:

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

Vous pouvez également utiliser @Html.Partial("~/View/Home/myview.cshtml")

Il retourne une chaîne pendant que Html.RenderPartial appelle Write en interne et renvoie void.

19
Developer

C'est faux:

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

C'est correct:

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

L'erreur d'analyse peut être due au contenu de la vue partielle. Par exemple, si vous avez une adresse électronique, veillez à utiliser @@ pour échapper correctement au signe @.

Caractère "{" après "@" inattendu. Une fois dans le corps du code block (@if {}, @ {}, etc.) vous n’avez pas besoin d’utiliser "@ {" pour passer à code.

9
Believe2014

pouvez-vous afficher le code entourant votre RenderPartial? J'imagine que vous êtes dans une boucle, si vous utilisez un bloc ou un autre type de bloc de code. Si oui, vous appelez simplement 

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

Utilisez @Html.Partial(). Il a trois surcharges, passez les paramètres selon vos besoins.

0
Deepak Singla

Veuillez réviser votre code, vous risquez de recevoir cette erreur parce que vous utilisez ce code: @{ Html.RenderPartial("ViewName", model); } À l’intérieur de toute autre clause @{}. Veuillez relire attentivement le message d'erreur que vous recevez dans le navigateur. Vous n'avez pas besoin d'utiliser le @{} pour passer au code car vous êtes déjà à l'intérieur. Supprimez simplement @{ et } et vous devriez le faire fonctionner correctement.

0
Alex Leyva