Что такое директива страницы в .NET - PullRequest
5 голосов
/ 10 октября 2010

Я готовлюсь к сертификационному экзамену Microsoft, и некоторые формулировки «содержания» в экзамене меня смутили.На веб-сайте экзамена по MS , в разделе Разработка страниц веб-форм , указано, что касается содержания на экзамене ...

Эта задача может включатьно не ограничивается: директивы страницы, такие как ViewState, проверка запроса, проверка события, MasterPageFile;ClientIDMode;

У меня сложилось впечатление, что директива страницы ссылается на ключевое слово @Page, а связанные значения, определенные в разделе @Page, являются атрибутами / свойствами.Но формулировка содержания экзамена почти подразумевает, что атрибуты / свойства ключевого слова @Page являются директивами.

Может кто-нибудь объяснить это мне?

Ответы [ 2 ]

2 голосов
/ 10 октября 2010

Директива page - это набор свойств, которые вы можете установить непосредственно для самого объекта Page и инструкции для компилятора asp.net.

На этой странице показан список всех свойств http://msdn.microsoft.com/en-us/library/ydy4x04a.aspx.

Цитата со страницы: Определяет атрибуты для конкретной страницы (файл .aspx), используемые синтаксическим анализатором и компилятором страницы ASP.NET.

"" На этих НОВЫХ страницах будет отображатьсясписок всех свойств и некоторые объяснения свойств / атрибутов:

Старая ссылка, отмеченная выше, http://msdn.microsoft.com/en-us/library/ydy4x04a.aspx, больше не нужна.Новейшие ссылки по целям: http://msdn.microsoft.com/en-us/library/t8syafc7(v=vs.100).aspx и http://msdn.microsoft.com/en-us/library/vstudio/ydy4x04a(v=vs.100).aspx для всех, кто ищет эту информацию.

2 голосов
/ 10 октября 2010

Я думаю, что их словосочетание немного сбивает с толку.Вы правы, что значения внутри директивы по сути являются свойствами.Фактически, вы можете установить большинство этих свойств AS в объектной модели (например, в коде):

 protected override void OnInit( EventArgs e )
 {
        this.EnableViewState = true;
        this.MasterPageFile = "~/something.master";
        this.Title = "Hello World";
 }

Их являются несколькими важными директивами помимо Page, такими как Import и Control.Я бы посоветовал также ознакомиться с ними.

РЕДАКТИРОВАТЬ: Мне было любопытно, где эти атрибуты заканчиваются при установке из директивы Page, поэтому я взглянул на кэш ASP.Net.Как вы, вероятно, знаете, когда страница выполняется, она превращается в объект и кэшируется в файловой системе в:

c: \ windows \ Microsoft.Net \ Framework [версия] \ Temporary ASP.Net Files \

        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
        private void @__BuildControlTree(content_shared_toolbarcontrol_ascx @__ctrl) {
            System.Web.UI.IParserAccessor @__parser = ((System.Web.UI.IParserAccessor)(@__ctrl));

            #line 1 "C:\dev\Web.UI\Content\Shared\ToolbarControl.ascx"
            @__parser.AddParsedSubObject(new System.Web.UI.LiteralControl("\r\n<div class=\"toolbar\">\r\n    "));

            #line default
            #line hidden
            global::System.Web.UI.HtmlControls.HtmlGenericControl @__ctrl1;

            #line 1 "C:\dev\Web.UI\Content\Shared\ToolbarControl.ascx"
            @__ctrl1 = this.@__BuildControldivDelete();

            #line default
            #line hidden

            #line 1 "C:\dev\Web.UI\Content\Shared\ToolbarControl.ascx"
            @__parser.AddParsedSubObject(@__ctrl1);

            #line default
            #line hidden

            #line 1 "C:\dev\Web.UI\Content\Shared\ToolbarControl.ascx"
            @__parser.AddParsedSubObject(new System.Web.UI.LiteralControl("\r\n    <div class=\"toolbarSpacer\"></div>\r\n    <div class=\"toolbarButton\">"));

et cetera

Что мне показалось интересным, так это то, что такие свойства, которые можно задать в директиве Page, не включены в эти автоматически созданные файлы.Это заставляет меня поверить, что директива в ее полноте обрабатывается при каждом запросе и не компилируется вместе со страницей.

РЕДАКТИРОВАТЬ # 2: Согласно приведенному ниже комментарию BurningIce, я углубился в это.Я полагаю, что атрибуты директивы могут быть описаны следующим образом.

Каждый из атрибутов в директиве служит одной или нескольким из следующих целей: подсказка компилятору (например, путь codebehind), подсказказагрузить страницу (например, от какого класса эта страница наследуется), подсказку для отображения страницы (например, MasterPageFile) и / или свойство, устанавливаемое для каждого экземпляра создаваемой страницы (например, «Заголовок»).

...