2012-03-26 10 views
3

"noteEditor"という名前の部分ビューを作成しました。これは、「要約」と呼ばれる別の部分的なビューの内部にレンダリングされます。私は、 "要約"パーシャルビューがレンダリングされた回数にかかわらず、一度だけページにレンダリングされる "noteEditor"パーシャルビューを望みます。ASP.NET MVCでコードを1回だけ実行する

私は要約部分ビュー内のような何かを期待していた:

@{ 
    var viewDataNotesEditorRegistered = ViewData["notesEditorRegistered"]; 
    var notesEditorRegistered = (bool)(viewDataNotesEditorRegistered ?? false); 
} 
@if (!notesEditorRegistered) 
{ 
    <div class="notesdialog" style="display: none;">@Html.Partial("NotesEditor")</div> 
    ViewData["notesEditorRegistered"] = true; 
} 

しかし、このコードはViewDataを[「notesEditorRegistered」]と呼ばれるたびにそれがnullで戻ってきます。

範囲全体(ページ全体とその要求のみ)のスコープはありますか?

あなたは代わりのViewDataをその目的のためのHttpContextを使用することができ感謝し

答えて

3

@{ 
    var viewDataNotesEditorRegistered = ViewContext.HttpContext.Items["notesEditorRegistered"]; 
    var notesEditorRegistered = (bool)(viewDataNotesEditorRegistered ?? false); 
} 
@if (!notesEditorRegistered) 
{ 
    <div class="notesdialog">@Html.Partial("NotesEditor")</div> 
    ViewContext.HttpContext.Items["notesEditorRegistered"] = true; 
} 
+0

トリックでした。ありがとう! –

関連する問題