在System.Web.Mvc.Controller中最后调用哪个方法View()?或者我应该覆盖每一个?我想在我的BaseController中设置一些视图数据,它继承自System.Web.Mvc.Controller。
修改 我想存储基本用户信息,如IsLoggedIn和BasicUserDetails {PermissionLevel,UserName,EmailAddress,UserId}
这是设置它的地方吗?
答案 0 :(得分:8)
您可能希望覆盖控制器上的某个“过滤器”方法。有四种这样的方法:
这是添加所有操作通用功能的更好方法,因为它得到官方支持且不太可能更改
答案 1 :(得分:3)
有两种不同的实现(在RC 1中):
protected internal virtual ViewResult View(string viewName, string masterName, object model) {
protected internal virtual ViewResult View(IView view, object model) {
所有其他人都称这两个。但是,我不认为这将永远保持这种状态。我不得不想象框架的未来版本可能会改变这种情况。
更新:存储用户信息use ASP.NET membership。它已经告诉您用户是否已登录 - Request.IsAuthenticated。您可以使用普通的Membership功能存储自定义权限。已经支持电子邮件属性等。当然,身份验证提供程序是可插入的,因此您可以使用任何类型的身份验证 - Windows,域,OpenID等。
更新2 :另请注意,ControllerBase有一个虚拟的Initialize方法,您可以覆盖该方法以设置稍后在各种操作中需要的内容。