Может ли кто-нибудь объяснить жизненный цикл веб-страниц ASP.NET? (Синтаксис Razor)

Я хочу знать жизненный цикл веб-страниц ASP.NET, используя синтаксис бритвы.

Из вопросов, заданных о жизненном цикле контроллера ASP.NET MVC при переполнении стека, ответы предполагают, что это объясняется в http://msdn.microsoft.com/en-us/magazine/dd695917.aspx. Так что я не задаю тот же вопрос.

Для чистого проекта веб-страниц ASP.NET (а не MVC) я хочу знать последовательность событий, которые происходят, когда браузер запрашивает файл .CSHTML.


person dushyg    schedule 08.05.2013    source источник
comment
То, что вы спрашиваете, не имеет смысла, жизненный цикл страницы применяется к приложениям веб-форм aspx (не MVC). Я почти уверен, что вы не можете использовать бритву вне MVC, и у нее нет «жизненного цикла», о котором вы говорите.   -  person Nicholas King    schedule 08.05.2013
comment
для жизненного цикла asp.net (aspx) попробуйте эту ссылку msdn.microsoft.com/en-us/library/ms178472 (v = vs.100) .aspx   -  person Nicholas King    schedule 08.05.2013
comment
@NicholasKing Razor изначально был разработан для платформы веб-страниц ASP.NET: asp.net/web-pages. Позднее он был заимствован командой MVC как новый движок View.   -  person Mike Brind    schedule 08.05.2013
comment
@MikeBrind Я этого не знал, но просмотр этой страницы на веб-страницах ASP.NET выглядит как шаблон MVC без материала microsoft MVC.   -  person Nicholas King    schedule 08.05.2013
comment
@NicholasKing В веб-страницах нет намека на шаблон MVC. Он использует ориентированный на страницы подход, такой как классический ASP или PHP.   -  person Mike Brind    schedule 08.05.2013
comment
@MikeBrind Я просмотрел образец кода Twitter (microsoft.com/web/post/) и имеет класс модели poco, представления бритвы и методы действий, такие как общедоступный статический список ‹TwitterEntry› TwitterSearch (строковое значение) мне кажется шаблоном MVC. Но я склоняюсь перед вашим большим знанием. Это просто мои впечатления от просмотра присланной вами ссылки.   -  person Nicholas King    schedule 08.05.2013
comment
@NicholasKing Это просто базовый класс с некоторыми вспомогательными методами. Нет ни Действия, ни Модели, ни Контроллера. Он немного более продвинутый, чем большинство примеров веб-страниц, но определенно не является MVC.   -  person Mike Brind    schedule 08.05.2013


Ответы (1)


В проекте веб-страниц классы C #, наследующие от System.Web.WebPages.WebPage, создаются из файла Razor при выполнении первого запроса к приложению. У класса есть один метод: Execute, который содержит ваш серверный код и несколько вызовов WriteLiteral, которые выводят HTML. Каждый класс назван в честь исходного файла .cshtml, например Default.cshtml становится

public class _Page_Default_cshtml : WebPage

Классы скомпилированы в dll. Запросы направляются в соответствующий класс.

Веб-страницы не являются моделью разработки, управляемой событиями, как веб-формы, поэтому нет конкретных событий как таковых, к которым вы могли бы подключиться, например, PreRender или Page_Load и т. Д.

person Mike Brind    schedule 08.05.2013
comment
Буду признателен за указатели на любые ссылки, в которых может быть более подробная информация об этом. Спасибо за ваши комментарии. - person dushyg; 28.05.2013
comment
Какие детали вы ищете? - person Mike Brind; 28.05.2013
comment
Я предполагаю, что это, вероятно, плохая идея (TM), но как насчет (пропуска контроллеров и) переопределения WebPage.ExecutePageHierarchy, помещения туда того, что было бы кодом PreRender (с использованием вашего собственного динамического ViewBag), а затем вызова base.ExecutePageHierarchy? - person Jared Thirsk; 25.11.2014