在ASP.NET MVC 3中只执行一次代码

3
我有一个名为“noteEditor”的局部视图,它被渲染在另一个名为“summary”的局部视图中。我希望“noteEditor”局部视图只被渲染一次,无论“summary”局部视图被渲染多少次。
我原本希望在“summary”局部视图中执行以下操作:
@{
    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。

是否有更“全局”的作用域(对整个页面及仅在该请求期间)?

谢谢。

1个回答

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;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接