Что такое директива страницы в.NET?

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

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

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

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

2 ответа

Решение

Я думаю, что их словосочетание немного сбивает с толку. Вы правы, что значения в директиве по сути являются свойствами. Фактически, вы можете установить большинство этих свойств 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 [версия]\ Временные файлы ASP.Net \

        [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) и / или свойство, устанавливаемое для каждого экземпляра создаваемой страницы (например, "Заголовок").

Директива 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, для всех, кто ищет эту информацию.

Другие вопросы по тегам