Директивы ASP.NET Pages

Недавно обнаружил для себя директиву - <%@ MasterType , оказалась достаточно удобной, для получения доступа к свойствам мастерпейджа, и тогда решил проверить - какие же еще директивы страниц я не знаю, да и прочесть про те что знаю еще разок

1. <%@ Assembly Name="assemblyname" %> || <%@ Assembly Src="pathname" %> - директива подключения сборки на странице, для того чтобы страница имела доступ к классам и интерфейсам этой сборки во время компиляции.
Указывается название сборки или путь до файла (файл кода), содержащего описания нужных классов/интерфейсов
Как правило - все необходимые сборки подключаются в файле
web.config, но не всегда нужно для всего проекта подрубать какие-либо сторонние компоненты

2. <%@ Implements Interface="InterfaceName" %> - указывает, что текущая страница (или контрол) реализует указанный интерфейс, да и все :) хотя я обычно просто наследую необходимые страницы от нужных мне интерфейсов

3. <%@ Import Namespace="YouNamespace" %> - импортирует namespace на страницу, т.е. то же что и using YouNamespace, но только на самой странице.
Как и при
using все классы, интерфейсы, перечисления и т.п. будут доступны, но уже в части разметки! Это действительно удобно, когда нужный класс находится в слишком глубоком namespace

4. <%@ MasterType VirtualPath="~/Masters/Simple.master”" %> - вот это зачетная вещь! если на странице указать в этой директиве путь в используемому мастерпейджу, то страница получит доступ ко всем свойствам мастер страницы при помощи классического свойства страницы Master, т.к. теперь это будет типизировання ссылка на Master Page.

а) создаем мастер страницу
б) добавляем в него свойство
public string GetHi { get { return "Hi!"; } }
в) создаем страницу и указываем у нее наш мастерпейдж
г) в директиве
MasterType также указываем путь к мастеру
д) теперь на странице можем просто получить доступ к свойству на мастер пейдже при помощи кода:
Master.GetHi

Я думаю - это прикольная фича, а вы как считаете?

5. <%@ OutputCache Duration="1000" %> - управляет параметрами кеширования контрола/страницы, позволяет полностью закешировать контрол, так, что .net даже не будет его загружать на страницы, а лишь при рендеринге вставит на его место закешированный HTML. параметров там много, по этой теме можно даже отдельную статью сделать, в кратце как пользоваться можно почитать тут

6. <%@ Page Language="C#" - уж с этой директивой все знакомы, но на всякий случай -
а)
CodeFile указывает какой кодовый файл использовать для обработки событий
б)
Inherits какой partial класс генерировать для страницы
в)
Language="C#" язык программирования
г)
MasterPageFile="../MasterPage.master" путь к мастер странице
д)
Async="true" асинхронная ли страница
е)
ValidateRequest="true" производить ли проверку посылаемых данных на безопасность (по умолчанию включена, в таком случае в TextBox html теги не введешь)
ж)
Trace="true" отображать ли информацию о сервере и загрузке контролов на странице

Думаю этих атрибутов для большинтсва случаев достаточно (маквалидацию не включил специально)

7. <%@ PreviousPageType VirtualPath="~/Tabs.aspx" %> - как и с мастепейджом - эта директива позволяет нам использовать свойство PreviousPage как типизированную ссылку на страницу, с которого пришел PostBack на нашу (по умолчанию PreviousPage имеет тип Page)

8. <%@ Reference Page="~/Tabs.aspx" %> - определяет, что текущая страница имеет доступ к классу страницы или контрола, путь которого указан в соответствующем атрибуте.

Думаю удобно, если необходимо создать контрол динамически, или при FindControl привести найденый объект к соответствующему типу

9. <%@ Register assembly="Org.Eurekaa.DNJ.UI" namespace="Org.Eurekaa.DNJ.UI.WebControls" tagprefix="dnj" %> - одна из самых частоиспользуемых директив на страницах, т.к. она позволяет нам прицепить на странице контрол по указанному пути, сборке, или namespase

Чтобы прицепить контрол по пути - нужно указать путь к нему в атрибуте Src, задать tagprefix и tagname, да и все в общем

чтобы заюзать контролы из сборки - достаточно как в примере указать сборку, пространство имен и TagPrefix, все классы пространства имен, являющиеся контролами становятся автоматически доступными на странице


Итак, вроде все рассмотрел, хотя и кратко, но думаю этого достаточно.
Как минимум - для себя открыл пару новых прикольных (хотя и врядли пригодящихся) директив, но бывают и нужны, например
Import - на ashx хендлерах (хотя код можно вынести), или PreviousPageType - просто для удобства

Комментариев нет:

Отправка комментария

Можете оставить свой комментарий