MVC5でRazorを使用してレンダリングする部分ビューを取得しようとしています。使用するとき
@{ Html.RenderPartial("ViewName", model); }
パーサーエラーが表示されます。
「@」文字の後の予期しない「{」。コードブロックの本体(@if {}、@ {}など)内に入ると、「@ {」を使用してコードに切り替える必要がなくなります。
{}
を削除すると、つまり:
@Html.RenderPartial("ViewName", model);
コンパイルエラーが発生します
型 'void'を 'object'に暗黙的に変換することはできません。
私は何を間違えていますか?
そのコードのコンテキストを投稿していませんが、HTMLラッピングなしでコードブロック内で@
を直接使用している場合にのみ、このエラーが発生します。例えば:
@if (true) {
@{ Html.RenderPartial(...); }
}
エラーが表示されますが、
@if (true) {
<div>
@{ Html.RenderPartial(...); }
</div>
}
大丈夫でしょう。 Html.RenderPartial
を含む@
のコードブロックを完全に削除することでも解決できます。
@if (true) {
Html.RenderPartial(...);
}
@Html.Partial("~/View/Home/myview.cshtml")
を使用することもできます
Html.RenderPartial
はWriteを内部的に呼び出し、voidを返します。
これは間違っています:
@Html.RenderPartial("ViewName", model);
これは正しいです:
@{ Html.RenderPartial("ViewName", model); }
解析エラーは、部分ビューのコンテンツが原因である可能性があります。たとえば、メールアドレスがある場合は、@@を使用して@記号を適切にエスケープしてください。
「@」文字の後の予期しない「{」。コードブロックの本体(@if {}、@ {}など)内に入ると、「@ {」を使用してコードに切り替える必要がなくなります。
renderPartialを囲むコードを表示できますか?私はあなたがループ、ifブロック、または他のタイプのコードブロックにいると推測しています。もしそうなら、あなたはただ電話するでしょう
Html.RenderPartial("ViewName", model);
@Html.Partial()
を使用します。 3つのオーバーロードがあり、要件に従ってパラメーターを渡します。
コードを確認してください。他の@{}
句内で@{ Html.RenderPartial("ViewName", model); }
コードを使用しているため、そのエラーが発生している可能性があります。ブラウザに表示されるエラーメッセージを注意深く読み直してください。すでに内部にいるので、コードに切り替えるために@{}
を使用する必要はありません。したがって、@{
と}
そして、あなたはそれを適切に機能させるべきです。