我有一个名为“noteEditor”的局部 View 。这是在另一个称为“摘要”的局部 View 中呈现的。我希望“noteEditor”局部 View 只呈现到页面一次,而不管“摘要”局部 View 呈现多少次。
我曾希望在摘要部分 View 中做一些类似的事情:
@{
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。
是否有更“全局”(针对整个页面且仅在该请求期间)的范围?
谢谢
最佳答案
您可以为此目的使用 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;
}
关于asp.net-mvc - 在 ASP.NET MVC 3 中只执行一次代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9865433/