ASP.NET MVC Master Pages - PullRequest
       16

ASP.NET MVC Master Pages

19 голосов
/ 17 января 2009

В чем разница между главной страницей ASP.NET и главной страницей MVC? А главная страница AJAX по этому вопросу?

Ответы [ 3 ]

16 голосов
/ 20 января 2009

В основном все сводится к элементам управления и наследования по умолчанию.

Мастер AJAX и Мастер ASP.NET оба наследуются от System.Web.UI.MasterPage, а Мастер MVC наследуется от ViewMasterPage.

Очевидно, что они дают вам немного другие элементы управления - как указано Джоном Клэйтоном , ViewMasterPage предоставляет помощников Ajax / Html / Url и т.п., которые недоступны для других MasterPages.

Кроме этого, элементы управления по умолчанию немного отличаются:

  • Главная страница ASP.NET будет иметь форму по умолчанию и два элемента управления ContentPlaceHolder (один в голове, другой в форме.
  • На главной странице AJAX также добавлен элемент управления ScriptManager внутри элемента управления Form.
  • MVC Master (в зависимости от версии - я ссылаюсь на бета-версию) будет иметь только два элемента управления ContentPlaceHolder (в голове и теле).

«Различия в жизненном цикле» происходят от элементов управления Page / ViewPage, а не от элементов управления MasterPage / ViewMasterPage.

3 голосов
/ 17 января 2009

ViewMasterPage в MVC - это чуть больше, чем главная страница, которая предоставляет тех же помощников, что и ViewPage. Это дает вам доступ к AjaxHelper, HtmlHelper, TempDataDictionary, UrlHelper, ViewContext, ViewData и HtmlTextWriter.

Как и ViewPage, когда вы используете WebFormsViewEngine (по умолчанию), вы должны противостоять любому желанию перегрузить события жизненного цикла страницы любой ценой! Они все еще там, и они все еще будут работать, поскольку внутри страницы все еще вызывается ProcessRequest (...).

На какую главную страницу AJAX вы ссылаетесь? Я не знаком ни с одним из включенных в рамки ...

1 голос
/ 17 января 2009

В качестве быстрого предположения я бы сказал, что ответом будет "жизненный цикл". ASP.NET WebForms, MVC и AJAX имеют разные жизненные циклы, которые влияют на события, на которые должен реагировать элемент управления главной страницы. Мастер-страница WebForms должна отвечать на Load, DataBind, PreRender, Render и т. Д. Мастер-страница MVC, вероятно, (не уверенна в этом) будет нуждаться в действии Render. Все остальные события излишни, и эквивалентный код будет найден в контроллере. Наконец, мастер-страница AJAX должна обрабатывать запросы AJAX поверх обычных.

Как я уже сказал, это что-то вроде предположения, поэтому рекомендуется больше исследований

...