asp.net - 在每个操作上填充 ViewData,但不在渲染操作上填充 ViewData

标签 asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-routing viewdata

我有一个需要在每个页面上可用的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/

相关文章:

c# - 如何让用户登录系统并仅在用户单击注销按钮后注销?

c# - mvc5 : Cannot access a disposed object. asp.net mvc5 使用统一

asp.net-mvc-3 - asp.net mvc3 如何格式化 View 中的日期时间

asp.net-mvc - HTML 帮助器类方法不起作用

ASP.NET重写自定义错误不发送内容类型 header

c# - ASP.NET 模块可以上传到 PHP 域吗?

asp.net - Elmah nuget 包不更新 web.config

html - 样式不适用于此表

asp.net - 更新我的 identityserver4 后不断收到无效范围错误

c# - 在 mvc ef 中动态选择显示名称的两个标签