Получение названия мастер-страницы в asp.net MVC - PullRequest
2 голосов
/ 17 февраля 2009

Какой самый ранний пункт, который я могу программно получить, к названию мастер-страницы, которая будет использоваться в приложении asp.net MVC?

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

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

Спасибо

1 Ответ

2 голосов
/ 17 февраля 2009

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

public ActionResult Index()
{
  return View("index","masterpagename");
}

Я думаю, что если вы хотите что-то сделать со своей главной страницей, ЭТО было бы способом. Я не знаю контекст вашего вопроса, но я предполагаю, что вы хотите манипулировать представлением и / или данными представления в зависимости от того, какая мастер-страница используется? Может быть, решение вашей проблемы не в том, чтобы программно получить имя главной страницы?

Добавление после редактирования: Что вы можете сделать, это создать новый «базовый» контроллер, который наследует класс Controller по умолчанию. Затем вы переопределяете методы View и говорите своим разработчикам использовать это:

public class MySuperController : Controller
{
  protected override ViewResult View(string viewName, string masterName, object model)
  {
    // do something here so your masterpage is different depending on the context //
    string newMasterName = "something-something";
    return base.View(viewName, newMasterName, model);
  }
}

Я «думаю», что все другие методы представления либо проходят через это, либо не используются в вашем случае (те, которые требуют, чтобы вы передали IView).

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