Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用自定义属性扩展ASP.NET MVC ViewResult_C#_Asp.net Mvc - Fatal编程技术网

C# 使用自定义属性扩展ASP.NET MVC ViewResult

C# 使用自定义属性扩展ASP.NET MVC ViewResult,c#,asp.net-mvc,C#,Asp.net Mvc,对于我的asp.net mvc项目,每当我返回一个视图时,我都会通过覆盖OnActionExecuted方法在基本控制器中附加两个属性,如下所示: protected override void OnActionExecuted(ActionExecutedContext filterContext) { if(filterContext.Result.GetType() == typeof(ViewResult)) { v

对于我的asp.net mvc项目,每当我返回一个视图时,我都会通过覆盖OnActionExecuted方法在基本控制器中附加两个属性,如下所示:

    protected override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        if(filterContext.Result.GetType() == typeof(ViewResult))
        {
            var action = filterContext.Result as ViewResult;
            action.ViewBag.ClientSettings = ClientSettings;
        }

        base.OnActionExecuted(filterContext);
    }
我目前正在将ClientSettings粘贴到ViewBag中,然后从ViewBag在视图中访问它


我真正想要的是动作本身直接在ViewResult上有ClientSettings属性,这样我就可以直接从视图中访问它,但我不太确定怎么做

我们使用的是强类型视图并存储类似于模型属性中描述的内容

您的案例(基本控制器代码):


现在,如果您的视图模型是从ViewModelBase继承的,那么您可以从基本控制器设置ClientSettings,并通过
ViewPage

model
属性在视图中访问它。我们使用的是强类型视图,存储的内容与您在模型属性中描述的内容类似

您的案例(基本控制器代码):


现在,如果您的视图模型是从ViewModelBase继承的,您可以从基本控制器设置ClientSettings,并通过
ViewPage的
model
属性在视图中访问它,谢谢。。。我想这是我必须采取的方法。。。这不完全是我想要的,但会的。谢谢。。。我想这是我必须采取的方法。。。这不完全是我想要的,但它会的。
protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
    var viewModel = filterContext.Controller.ViewData.Model as ViewModelBase;
    if (viewModel != null)
    {
        viewModel.ClientSettings = ClientSettings;
    }

    base.OnActionExecuted(filterContext);
}