7

今日、かなり新しいプロジェクトを ViewPages から Razor に移行しましたが、すべて順調に進んでいるようです。Html.Action を使用してユーザー コントロールをレンダリングしようとしている場合を除いて、何もレンダリングされません。

だから私は Home/Index.cshtml で参照されている Shared/_Layout.cshtml ファイルを持っています

Index.cshtml には次のものがあります。

<article>

@Html.Action("LatestBlogsMainPanelWidget", "Blogs")

...

</article>

BlogsController にトラップを配置したので、それが要求されていることがわかります。また、モデルが返されていること、LatestBlogsMainPanelWidget がビュー エンジンによって検出されていること、およびいくつかのダミーの Razor 構文コードが実行されていることもわかっています。}

しかし、このファイルのプレーンな html はブラウザに届きません。他の (以前は動作していた) パーシャルも試しましたが、どちらも表示されません (ページのソースを表示すると、そこにないことが確認されます)。

@{ Html.RenderAction(...); の代用も試みました。成功せずに。@Html.Action の両側に HTML が表示されているので、Index.cshtml が正しく表示されていることがわかります。

さらに奇妙なことに、_Layout ファイルには Html.Action コマンドも含まれており、問題なく表示されます。

他に何を確認すればよいのか、パイプラインが HTML を取得していることを確認する方法がよくわかりません。誰でも助けることができますか?

ありがとう!

4

4 に答える 4

8

部分ビューに Layout = null を配置すると、正常に機能します。

于 2011-01-21T19:50:22.970 に答える
6

これを試して:

@{Html.RenderAction("LatestBlogsMainPanelWidget", "ブログ");}

于 2010-12-16T02:23:18.630 に答える
1

脳はおかしいもので、昨日はこれに数時間を費やしたにもかかわらず、私の潜在意識が答えにつまずくのに、私の犬が夜中に私を起こしてくれました。

これが他の誰かを困惑させたとしても、私は驚かない。スティーブ・サンダーソンによって設計されたものと同様の部分レベルのキャッシングシステムを使用していることに気づかなかったので、私は言及しませんでした。私の知る限り、RazorページはWebFormページよりもはるかに少ないパイプライン処理を実行するため、これが原因である可能性があることに突然気づきました。キャッシングフィルターは、おそらく必要なことを実行していないか、適切なタイミングで実行していません。

問題のアクションのOutputCacheフィルターをコメントアウトすると、問題が修正されたことを確認しました。

この問題がページレベルのキャッシュに当てはまるかどうかはわかりません。これは、私が役立つと思うものではないためです。

于 2010-12-11T06:38:03.793 に答える
1

この問題の解決策を検索しているときに、Html.Action と Html.RenderAction が適切にレンダリングされないという 3 つの対策の問題を見つけました。以下のことを正しく行ったかどうかを確認してください。

  1. PartialView または View で@{Layout = null;}を定義しました。
  2. Viewの代わりにreturn PartialViewを使用します。
  3. アクションを[ChildActionOnly]属性で装飾します。

上記のすべての手順を適用することで、問題を解決できることを願っています。

于 2015-09-18T06:56:48.867 に答える