2011-01-20 6 views
1

私のASP.NET MVC 2 Webアプリケーションでは、私はRenderActionを使って、Webサイトの「フラッシュメッセージ」領域と呼ばれるものにHTMLを表示します。フラッシュ領域では、ユーザがログインすると、前のリクエストに関するメッセージが含まれている、上に近いハイライトされた領域を意味します。RenderActionでレンダリングされる部分ビュー内で<asp:Content>のようなものを使用する方法はありますか?

私が取り組んでいる1つのフラッシュメッセージはもう少し複雑です。応答にJavascriptコードのブロックを追加する必要がありますが、High Performance JavaScriptで推奨されているように、末尾に</body>タグの前にscript要素を配置します。

通常の表示では、を使用して、ページの下部にscriptの要素を配置します。残念ながら、私がRenderActionでレンダリングされた部分的なビューで同じことを試みた場合、パーサーエラー "コンテンツコントロールはコンテンツページのトップレベルコントロールまたはマスターページを参照するネストされたマスターページでなければなりません"というエラーが表示されます。

部分ビューで使用できる<asp:Content>のようなものがあります。これは、内容をマスターページの対応する場所に挿入しますか?

答えて

2

<asp:Content>はRenderActionでサポートされていません。これは、RenderActionが子のアクションメソッドを実行するコードを持っているため、レスポンスを収集して親メソッドのビューに貼り付けるためです。

あなたができることは、どこかで必要なスクリプトをHttpContextBase.Itemsコレクションに追加することです。次に、ドキュメントの最後の前にマスターページで、登録されたスクリプトを取得し、それらを印刷します。

+0

'HttpRequest'(http://msdn.microsoft.com/en-us/library/system.web.httprequest.aspx)のMSDNドキュメントで' Items'が表示されません。それは間違った 'HttpRequest'ですか? –

+0

申し訳ありませんが、['HttpContextBase.Items'](http://msdn.microsoft.com/en-us/library/system.web.httpcontextbase.items.aspx)を意味します。 'HttpContext.Current'静的プロパティを介してではなく、コントローラやビューのオブジェクトを介して取得する必要があります。 – marcind

+0

コントローラアクションまたはビュー内で 'HttpContext.Current'が不正なのはなぜですか? –

関連する問題