MVC中的基页等价物是什么

时间:2010-02-18 16:38:41

标签: asp.net-mvc

在我的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;
 }
}

3 个答案:

答案 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有一些基本逻辑而不是你的页面。在控制器中,您可以根据条件在渲染视图时选择不同的母版页,如果需要。