在我的ASP.Net网站上,我有以下代码,我可以在整个网站范围内使用 如何在ASP.Net MVC2中执行相同操作?
public class BasePage : Page
{
public BasePage()
{
this.PreInit += new EventHandler(BasePage_PreInit);
}
/// <summary>Every page executes this function before anything else.</summary>
protected void BasePage_PreInit(object sender, EventArgs e)
{
// Apply Theme to page
Page.Theme = "Default";
}
public bool IsSiteAdmin(string userName)
{
if (System.Web.Security.Roles.IsUserInRole(userName, "SiteAdmin1"))
return true;
return false;
}
}
答案 0 :(得分:7)
不确定主题如何适合MVC(我怀疑不是很好),但一般来说你只需要创建一个基本控制器类。
public class BaseController : Controller
然后从这个基础派出所有控制器。
public class HomeController : BaseController
这样,您可以为所有控制器提供通用功能。例如你的IsSiteAdmin方法。
答案 1 :(得分:6)
正如zaph0d所说,你想要覆盖Controller类。创建自己的Controller类时,可以覆盖几个“事件”。这些列表将在这里:
http://msdn.microsoft.com/en-us/library/system.web.mvc.controller_members.aspx
以下是您可能想要做的事情。请注意,我不知道Page.Theme是什么或者是什么。
public class BaseController : Controller
{
protected string Theme { get; set; }
protected override void OnActionExecuting(ActionExecutingContext context)
{
Theme = "Default";
}
public bool IsSiteAdmin(string userName)
{
return System.Web.Security.Roles.IsUserInRole(userName, "SiteAdmin1");
}
}
答案 2 :(得分:3)
MVC拥有母版页和视图。听起来你希望你的Controller有一些基本逻辑而不是你的页面。在控制器中,您可以根据条件在渲染视图时选择不同的母版页,如果需要。