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?
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(...);
}
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.
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.
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);
Utilisez @Html.Partial()
. Il a trois surcharges, passez les paramètres selon vos besoins.
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.