0

我正在尝试为我所有派生自ViewModelBase. 除了我遇到了一种 Catch-22 ......

my 的共同属性ViewModelBase是:UserEnvironment(还有更多,但对于这个问题,这两个就足够了)。

现在,我有一个分配这两个属性的全局过滤器 -ViewModelBase.User属性是从 分配的BaseController.User,它之前是由授权过滤器分配的。

它在所有情况下都运行良好,但是:授权过滤器有时会根据业务逻辑决定将用户重定向到“尚未批准”页面。这样做是这样的:

var notApprovedView = new ViewResult();
notApprovedView.ViewName = "NotYetApproved";
filterContext.Result = notApprovedView;

除了在这种情况下,ViewModel 还没有应该由全局过滤器分配的公共属性,这会导致运行时异常。

处理我需要分配公共属性并且某些公共属性可能会根据授权而改变的情况的正确(即最佳实践,而不是hack)方法是什么?

谢谢。

4

1 回答 1

0

我想我可能因为这棵树上的树而错过了森林……对不起。

我可以在授权过滤器中执行以下操作:

var notApprovedView = new ViewResult();
notApprovedView.ViewName = "NotYetApproved";

// add this line    
notApprovedView.Model = new ViewModelBase(){User = this.user};

filterContext.Result = notApprovedView;
于 2013-04-08T20:27:26.627 回答