我有一个部分视图,我创建了一个名为“noteEditor”的视图。这是在另一个称为“摘要”的局部视图内部呈现的。我希望“noteEditor”局部视图只渲染到页面一次,无论呈现“摘要”局部视图多少次。
我原本希望在摘要局部视图中做一些事情:
@{
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。
是否存在更多“全局”(对于整个页面以及仅在该请求期间)范围?
由于
答案 0 :(得分:3)
您可以使用HttpContext代替ViewData:
@{
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;
}