Что такое эквивалент базовой страницы в MVC - PullRequest
1 голос
/ 18 февраля 2010

На моих веб-сайтах 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 ]

7 голосов
/ 18 февраля 2010

Не уверен, как темы вписываются в MVC (не очень хорошо, я подозреваю), но в целом вам просто нужно создать базовый класс контроллера.

public class BaseController : Controller

и затем извлечь все ваши контроллеры из этой базы.

public class HomeController : BaseController

Таким образом, вы можете иметь общую функциональность, доступную для всех контроллеров.например, ваш метод IsSiteAdmin.

6 голосов
/ 18 февраля 2010

Как сказал 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");
    }
}
3 голосов
/ 18 февраля 2010

MVC имеет главные страницы и просмотры. Звучит так, будто вы хотите, чтобы ваш контроллер имел некоторую базовую логику вместо вашей страницы. В вашем контроллере вы можете выбрать другую главную страницу при отображении ваших представлений, если хотите, в зависимости от вашего состояния.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...