【发布时间】:2011-07-17 21:40:44
【问题描述】:
我研究了一些关于 SO 的问题,但似乎无法找到答案。谁知道呢,也许我正在打破最佳实践。在阅读了关于使用布局注入器属性能够通过简单地指定一个属性来设置布局的优秀答案之后,我想我也可以使用这种类来为需要用户进行身份验证的控制器设置属性。
因此,我不必到处检查身份验证,而是写了以下内容:
// class AdminAttribute
public class AdminAttribute : LayoutInjectorAttribute
{
// ctor
public AdminAttribute()
: base("_LayoutAdmin")
{
} // eo ctor
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
WebUser user = WebApplication.CurrentUser;
if (!user.IsAuthenticated)
{
filterContext.Result = new ViewResult() { ViewName = "Unauthorised" };
filterContext.Controller.ViewData.Model = new ViewModel(WebApplication.CurrentUser.Translate("msgunauthorisedtitle"));
filterContext.Result.ExecuteResult(filterContext.Controller.ControllerContext);
return;
}
base.OnActionExecuting(filterContext);
} // eo OnActionExecuting
} // eo class AdminAttribute
除了处理视图时模型为null 之外,一切正常。有谁知道为什么会这样?
查看页面(Unauthorised.cshtml)
@model Py2.Web.ViewModel
<h2>@Model.Title</h2>
提前致谢!
【问题讨论】:
标签: c# asp.net-mvc-3 viewmodel