web-dev-qa-db-ja.com

MVC5でRazorを使用して部分ビューをレンダリングする

MVC5でRazorを使用してレンダリングする部分ビューを取得しようとしています。使用するとき

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

パーサーエラーが表示されます。

「@」文字の後の予期しない「{」。コードブロックの本体(@if {}、@ {}など)内に入ると、「@ {」を使用してコードに切り替える必要がなくなります。

{}を削除すると、つまり:

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

コンパイルエラーが発生します

型 'void'を 'object'に暗黙的に変換することはできません。

私は何を間違えていますか?

22
Mourndark

そのコードのコンテキストを投稿していませんが、HTMLラッピングなしでコードブロック内で@を直接使用している場合にのみ、このエラーが発生します。例えば:

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

エラーが表示されますが、

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

大丈夫でしょう。 Html.RenderPartialを含む@のコードブロックを完全に削除することでも解決できます。

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

@Html.Partial("~/View/Home/myview.cshtml")を使用することもできます

Html.RenderPartialはWriteを内部的に呼び出し、voidを返します。

23
Developer

これは間違っています:

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

これは正しいです:

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

解析エラーは、部分ビューのコンテンツが原因である可能性があります。たとえば、メールアドレスがある場合は、@@を使用して@記号を適切にエスケープしてください。

「@」文字の後の予期しない「{」。コードブロックの本体(@if {}、@ {}など)内に入ると、「@ {」を使用してコードに切り替える必要がなくなります。

9
Believe2014

renderPartialを囲むコードを表示できますか?私はあなたがループ、ifブロック、または他のタイプのコードブロックにいると推測しています。もしそうなら、あなたはただ電話するでしょう

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

@Html.Partial()を使用します。 3つのオーバーロードがあり、要件に従ってパラメーターを渡します。

0
Deepak Singla

コードを確認してください。他の@{}句内で@{ Html.RenderPartial("ViewName", model); }コードを使用しているため、そのエラーが発生している可能性があります。ブラウザに表示されるエラーメッセージを注意深く読み直してください。すでに内部にいるので、コードに切り替えるために@{}を使用する必要はありません。したがって、@{}そして、あなたはそれを適切に機能させるべきです。

0
Alex Leyva