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

时间:2012-03-26 01:00:57

标签: asp.net-mvc

我有一个部分视图,我创建了一个名为“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。

是否存在更多“全局”(对于整个页面以及仅在该请求期间)范围?

由于

1 个答案:

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