【发布时间】:2015-08-26 17:05:43
【问题描述】:
我正在开发 MVC 2 中的 Web 应用程序,该应用程序为所有其他控制器使用基本控制器,以将控制器的初始化减少到一个地方。基本控制器包含菜单、当前用户等属性。代码如下:
public class BaseController : Controller
{
private Common.MenuHierarchy _menu;
private User _currentUser;
internal NavMenuViewModel Menu(string pageId)
{
bool isGuest = this.CurrentUser.GroupProfileId == Constant.SecurityGroupProfile.Public;
if (this._menu == null)
{
this._menu = CreateMenu();
}
}
internal User CurrentUser
{
get
{
if (this._currentUser == null)
{
this._currentUser = CreateUser();
}
return this._currentUser;
}
}
}
所有其他控制器都派生自 BaseController。例如,
public class HomeController : BaseController
{
...
}
public ActionResult Index()
{
// Display home page
...
}
我注意到在指向 Home 索引后,_currentUser 属性已被初始化。但是,如果我在 get 中设置 point break,它就不会止步于此。我想知道基本控制器何时初始化。谢谢。
【问题讨论】:
-
您是否在任何地方呼叫
Menu()?如果不是,currentUser似乎不太可能被初始化。 -
是的,Menu() 被调用。 currentUser 在被调用之前被初始化。
标签: c# asp.net-mvc