ASP.NET WEB FORMS David Kadlec  Dovolují vytvářet webové aplikace podobně s pomocí ovládacích prvků (controlů) podobně jako ve WinForms  Webové aplikace se ale liší od desktopových aplikací  Aplikace běží na serveru  Běží nad bezstavovým protokolem http(s)  Hlavním prvkem je stránka s koncovkou .aspx, obsahuje  Html markup  Markup definující controly  Direktivy jak zacházet se stránkou, např. <%@ Page %>  Dále každá stránka obsahuje kód (code behind)  Tento kód je umístěn v souboru *.aspx.cs  Čistě C# kód  Aplikace je event-driven Ukázka ASPX markupu Code behind using System; namespace Website { public partial class SampleCodeBehind : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Response.Write("Hello, world"); } } } ViewState  Způsob jakým se řeší bezstavovost http protokolu  ViewState uchovává informace mezi postbacky (odeslání formuláře na server)  ViewState obsahuje kolekci dat, které obsahují controly  Data jsou zakodována do Base64   http://ignatu.co.uk/ViewStateDecoder.aspx  ViewState lze vypnout jak pro celou stránku tak pro každý control zvlášť  Property IsPostBack, která říká, jestli je to první načtení stránky nebo jestli již byly odeslány nějaká data Simple DEMO  Je to nejjednodušší ukázka web forms aplikace s ukázkou ViewState a PostBacku  Adder Životní cyklus aplikace  http://msdn.microsoft.com/en-us/library/bb470252(v=vs.100).aspx Životní cyklus stránky (controlů)  http://msdn.microsoft.com/en-us/library/ms178472(v=vs.100).aspx  Výběr hlavních eventů životního cyklu stránky  Init  Vyvolán poté, co jsou všechny controly inicializovány  Využívá se k vlastní dodatečné inicializaci  Load  Vyvolán poté, co stránka načetla view state pro sebe a všechny controly  Využívá se k nastavení properties controlů  PreRender  Vyvolán těsně před tím, než je vyrenderováno samotné html  Využívá se k úplně posledním úpravám, které ještě ovlivní výstup Příklad  Po kliknutí na button proběhnou vybrané eventy v pořadí  Page.Init  Page.Load  TextBox.TextChanged  Button.Click  Page.PreRender  Page.Unload Třída Page  Všechny stránky jsou instancí třídy Page  Dává nám přístup k  Session  Application  Cache  Request  Response  Server  User  Trace  K těmto datům se lze dostat i mimo Page třídu přes HttpContext.Current Session  http://msdn.microsoft.com/en-us/library/ms178581.aspx  Poskytuje možnost ukládat informace v paměti serveru  Podporuje jakýkoliv objekt  Session je uložena zvlášť pro každého klienta, v cookie je unikátní ID  Uložení hodnoty do session  Čtení dat ze session if (Session["UserName"] != null) { lblWelcome.Text = "Welcome : " + Session["UserName"]; } Session["UserName"] = txtUser.Text; Application  http://msdn.microsoft.com/en-us/library/ms178594.aspx  Zpřístupňuje stav aplikace přes dictionary  Dictionary je vytvořen při startu aplikace  Je sdílený pro všechny klienty  Je držen v paměti a restart aplikace jej vymaže Request  Reprezentuje http požadavek  Cookies, Headers, Url, Browser, Form, QueryString, … Response  Dovoluje práci s odpovědí, která bude odeslána klientu  Není doporučeno s ní přímo pracovat, kromě  Nastavení cookies  Redirect WebApplication projekt (4.5)  Visual Studio 2013 -> New project -> Web -> ASP.NET Web Application  Zobrazí se na výběr typ projektu  WebForms, MVC, SPA, Web API, …  Typ Autentifikace -> žádná, účty, winAuth  Možnost přidat další reference -> MVC, Web API  Vytvoří základní projekt s hotovou strukturou  Obsahuje  Entity Framework + Local DB  Jquery  Bootstrap  … Demo „prázdného“ projektu Struktura projektu  web.config  Obsahuje hlavní nastavení projektu  Connection string do databáze  Typ .net frameworku  …  *.Master  Master page  Obsahuje layout, všechny stránky jej poté využívají  Obsahuje ContentPlaceHoldery, které říkají, kam můžou stránky renderovat obsah  App_Data  Defaultní cesta pro lokální databáze  Zapisovat zde může pouze aplikace  Global.asax  Soubor, který obsahuje kód přihlášený k aplikační eventům jako Application_Start  Content  Obsahuje soubory jako css, jpg, …  Scripts  Javascript, TypeScript, …  App_Start  BundleConfig  Konfigurace balíků a jejich minifikace  IdentityConfig  Konfigurace autentifikace  RouteConfig  Konfigurace routování  Jednoduché nastavení cest jako /Product/Car  Account  Stránky spojené se správou uživatele  Models  Třídy představující objekty  Košík, Product, … Getting Started with ASP.NET 4.5 Web Forms and Visual Studio 2013  http://www.asp.net/web-forms/tutorials/aspnet-45/getting-started-with- aspnet-45-web-forms/introduction-and-overview  http://download.microsoft.com/download/0/F/B/0FBFAA46-2BFD-478F-8E56- 7BF3C672DF9D/Getting%20Started%20with%20ASP.NET%204.5%20Web%20Forms %20and%20Visual%20Studio%202013.pdf