Asp.net mvc 用于向ASP.NET MVC 4中的视图提供公共数据的操作筛选器
我正试图为从Asp.net mvc 用于向ASP.NET MVC 4中的视图提供公共数据的操作筛选器,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,我正试图为从ViewModelBase派生的所有视图获取一些公共属性。除了我遇到了第22条军规 我的ViewModelBase的常见属性是:User和Environment(还有更多属性,但对于这个问题,这两个属性就足够了) 现在,我有一个全局筛选器来分配这两个属性—ViewModelBase.User属性是从先前由授权筛选器分配的BaseController.User中分配的 它在所有情况下都能很好地工作,但这是:授权过滤器有时根据业务逻辑决定将用户重定向到“尚未批准”页面。这是这样做的: v
ViewModelBase
派生的所有视图获取一些公共属性。除了我遇到了第22条军规
我的ViewModelBase
的常见属性是:User
和Environment
(还有更多属性,但对于这个问题,这两个属性就足够了)
现在,我有一个全局筛选器来分配这两个属性—ViewModelBase.User
属性是从先前由授权筛选器分配的BaseController.User
中分配的
它在所有情况下都能很好地工作,但这是:授权过滤器有时根据业务逻辑决定将用户重定向到“尚未批准”页面。这是这样做的:
var notApprovedView = new ViewResult();
notApprovedView.ViewName = "NotYetApproved";
filterContext.Result = notApprovedView;
除此之外,在本例中,ViewModel还没有应该由全局过滤器分配的公共属性,这将导致运行时异常
如果我需要分配公共属性,并且某些公共属性可能会根据授权而变化,那么处理这种情况的正确方法是什么(即最佳做法,而不是黑客)
谢谢。我想我可能因为这棵树而错过了森林。。。对不起 我可以在授权筛选器中执行以下操作:
var notApprovedView = new ViewResult();
notApprovedView.ViewName = "NotYetApproved";
// add this line
notApprovedView.Model = new ViewModelBase(){User = this.user};
filterContext.Result = notApprovedView;