asp.net part 2
TRANSCRIPT
ASP.NETPart 2
Як працює ASP.NET Web Forms
• CGI-style vs tree of controls
• Tree of controls:
– Web controls конвертуються з розмітки в об’єкти
– Решта HTML коду конвертується в Literal controls
PHP vs ASP.NET
Demo
Viewstate.aspx
Page lifecycle (основні фази)• Instantiate – будується дерево контролів з декларативного
опису (markup)
• Init – програмно встановлюються властивості контролів + створюються динамічні контроли
• Load View State – відновлюються властивості
• Load Postback Data – встановлюються властивості, передані користувачем через POST
• Raise Postback Events – OnClick, OnChanged – працює логіка програми, програмно встановлюються властивості контролів
• Save View State – зберігаються програмно змінені властивості
• Render – з дерева контролів будується HTML і відправляється клієнту
Web Server Controls
• Генерують HTML (render) динамічно
• Визначаються в *.aspx розмітці
• Мають events (server-side)
• Code-behind класи працюють з контролами
• Контроли можуть створюватись динамічно
• Контроли зберігають стан у ViewState
View State
• Потрібен для збереження програмно встановлених властивостей контролів між postback’ами
• Тому що HTTP не зберігає стан (stateless)
• View state – спосіб зберегти стан сторінки в HTML
– Стан «мандрує» між клієнтом і сервером разом із POST-requests and HTML-responses
Events
• Raise -- asp:Button OnClick
• Реалізація – ID кнопки передається в тілі POST запиту
• Changed – asp.TextBox OnTextChanged
• Реалізація – значення з POST запиту порівнюється з попереднім значенням
Validation• Client-side and server-side
• Типи
– Required field <asp:RequiredFieldValidator>
– Range <asp:RangeValidator>
– Compare control values <asp:CompareValidator>
– Pattern matching <asp:RegularExpression>
– Custom <asp:CustomValidator>
• <asp:ValidationSummary>
Demo
Validation.aspx
Data Binding
• <asp:DropDownList>
– DataSource property
– DataBind() method
– DataTextField property
– DataValueField property
Demo
DataBindingDropDown.aspx
Web.config transformations
• Web.config
– Web.Debug.config
– Web.Release.config
• Дозволяє визначати різні налаштування для різних build-конфігурацій
• Що таке build-конфігурації
JavaScript Demo
• JSExample.aspx
• Файл ~/Scripts/Common.js
• <script>
• Порядок завантаження скриптів та HTML елементів важливий
• Visual Studio can debug JavaScript
• ScriptManager -- для завантаження скриптів
UpdatePanel• Дозволяє оновлювати частини сторінки
незалежно від решти (AJAX)
• Asynchronous JavaScript and XML
• Усуває необхідність перевантаження (reload) всієї сторінки
• Не вимагає знання JavaScript
• На формі повинен бути ScriptManager
Demo
UpdatePanel.aspx
Demo
Java script in real ASP.NET projects
FormsAuthentication
BeginRequest ->AuthenticateRequest->
AuthorizeRequest ->… ->
EndRequest
Application lifecycle
Отримується запит до аплікації
Отримується перший запит до аплікації
•Створюється ApplicationManager, HostingEnvironment
•Компілюється код з App_Code
Створюються відповідні Httpоб’єкти
•Створюються HttpContext, HttpRequest, HttpResponse
HttpApplication створюється та присвоюється запиту.
Запит обробляється за допомогою HttpApplication
http://msdn.microsoft.com/en-us/library/bb470252.aspx
IHttpModule
HttpModule – це обробник HTTP запитів який обробляє всі запити до сайту перед їх безпосереднім виконанням.
Demo
IHttpModule in real projects
IHttpHandler
HttpHandler - це обробник HTTP запитів який обробляє певний тип запитів.
Demo
IHttpHandler in real projects