我有一个需要在每个页面上可用的viewData
。如果我使用 onActionExecuting
填充此 ViewData
。它会填充每个操作,甚至部分页面的操作结果。我希望 ViewData 在每次页面加载时只填充一次。
任何建议
最佳答案
您可以使用 OnActionExecuting 事件并测试 View 返回的结果是普通 View 还是部分 View ,并据此决定是否将信息添加到 ViewData:
public class MyActionFilter : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
if (filterContext.Result is ViewResult)
{
filterContext.Controller.ViewData["foo"] = "bar";
}
}
}
让一些通用数据可供所有 View 使用的另一种可能性是将其外部化在单独的子操作中并使用 Html.Action helper例如,将其包含在您的布局中。
关于asp.net - 在每个操作上填充 ViewData,但不在渲染操作上填充 ViewData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9340695/