Kereskényi Róbert MSDN Kompetencia Központ Budapesti Műszaki és Gazdaságtudományi Egyetem Automatizálási és Alkalmazott Informatikai Tanszék.

Hasonló előadás


Az előadások a következő témára: "Kereskényi Róbert MSDN Kompetencia Központ Budapesti Műszaki és Gazdaságtudományi Egyetem Automatizálási és Alkalmazott Informatikai Tanszék."— Előadás másolata:

1 Kereskényi Róbert roby@aut.bme.hu MSDN Kompetencia Központ Budapesti Műszaki és Gazdaságtudományi Egyetem Automatizálási és Alkalmazott Informatikai Tanszék ASP.NET 2.0 alkalmazások arculata és testreszabása

2 2 Tartalom  Személyre szabhatóság  Felhasználói élmény  Mesteroldalak  Témák  Navigáció  Lokalizáció

3 3 Webkijelző keretrendszer  Keretrendszer portál stílusú alkalmazásokhoz  System.Web.UI.WebControls.WebParts  Gazdag UI minimális kód árán  Fogd-és-vidd átrendezés  Megjelenés, viselkedés, stb. szerkesztése  Automatikus személyre szabhatóság  Összekapcsolás, üzenetek

4 4 WebPartManager, WebPartZone  WebPartManager  Oldalanként egy van  Nem vizuális vezérlőelem  Az oldalon lévő webkijelzőket menedzseli  WebPartZone  Zónákat definiál egy oldalon  Ebben lehetnek majd a webkijelzők  Definiálja a webkijelzők megjelenését  WebPartChrome – címsor és keret

5 5 WebPart  Webkijelző zónákban lévő kontrollok  WebControls, UserControls, CustomControls  Ha nem implementálja IWebPart-ot  GenericWebPart-ba csomagolódik  Webkijelző tulajdonságokat kap: Title, Description,...

6 6 Példa WebPartzone WebPart Címsor Keret Menü gombok

7 7 WebPartManager.DisplayMode  Get/Set az oldal megjelenítési módjára ÉrtékLeírás BrowserDisplayMode"Normal" mód; szerkesztés nélkül EditDisplayModeWebkijelzők kinézetének és viselkedésének szerkesztése DesignDisplayModeWebkijelzők drag-and-drop mozgatása a zónákban CatalogDisplayModeWebkijelzők hozzáadása az oldalhoz ConnectDisplayModeWebkijelzők összekapcsolásának lehetősége

8 8 CatalogZone  CatalogZone  CatalogPart vezérlőket tartalmaz  Ezekből webkijelzőket tehetünk fel az oldalunkra  DeclarativeCatalogPart  Fejlesztő által definiált lista  PageCatalogPart  Bezárt webkijelzők listája  ImportCatalogPart  webkijelzőket importálhatunk fájlból

9 9 EditorZone  EditorPart vezérlőket tartalmaz  Webkijelzők kinézetét szerkeszthetjük  AppearanceEditorPart  Title, width, height, …  BehaviorEditorPart  Edit, Close, Minimize button  LayoutEditorPart  Chrome State, Zone, Zone Index  PropertyGridEditorPart  Saját Property-k szerkesztése

10 10 PropertyGridEditorPart  Saját tulajdonságok szerkesztése futás közben  [WebBrowsable] Így néz ki felületen Ezáltal megjelenik majd PropertyGridEditorPart -on string _stocks; // e.g., "MSFT,INTC,AMZN" [WebBrowsable] public string Stocks { get { return _stocks; } set { _stocks = value; } } string _stocks; // e.g., "MSFT,INTC,AMZN" [WebBrowsable] public string Stocks { get { return _stocks; } set { _stocks = value; } }

11 11 Webkijelzők együttműködése  A webkijelzők képesek együttműködni  Üzenetet küldeni  Üzenetet fogadni  Adott interfészen keresztül  WebPartManager felügyeli  Kikeresi az interfészt a szolgáltatótól  Átadja a fogyasztónak  Statikus, dinamikus összekapcsolás

12 12 Webkijelzők együttműködése  Connection Provider  Egy metódusban visszaadja az interfészt  [ConnectionProvider] attribútum  Connection Consumer  Metódusban megkapja az interfészt  [ConnectionConsumer] attribútum

13 13 Static Connections  Statikusan definiált a WebPartManager elemén belül   <asp:Connection ID="ZipCodeConnection" Runat="server" ProviderID="Weather1" ProviderConnectionPointID="ZipCodeProvider" ConsumerID="News1" ConsumerConnectionPointID="ZipCodeConsumer" /> <asp:Connection ID="ZipCodeConnection" Runat="server" ProviderID="Weather1" ProviderConnectionPointID="ZipCodeProvider" ConsumerID="News1" ConsumerConnectionPointID="ZipCodeConsumer" />

14 14 Személyre szabhatóság  Automatikusan eltárolja a webkijelzők tulajdonságait  felhasználónként vagy közösen  Layout, kinézet, …  Saját property, ami [Personalizable]  PersonalizationAdministration osztály  Provider-alapú  rugalmas

15 15 Webkijelzők

16 16 Tartalom  Személyre szabhatóság  Felhasználói élmény  Mesteroldalak  Témák  Navigáció  Lokalizáció

17 17 Mesteroldalak  Vizuális öröklés Mesteroldal Tartalom oldal

18 18 Mesteroldalak működése  Mester oldal tartalmazza a közös tartalmat és tartalom helyőrzőket ( )  Tartalom oldal hivatkozik a mesterre és kitölti a helyőrzőket ( ) Site.masterdefault.aspx Content http://.../default.aspx Content- PlaceHolder

19 19 Mester oldal definiálása Webes megoldások ASP.NET 2.0 alapokon Webes megoldások ASP.NET 2.0 alapokon

20 20 Mester oldal alkalmazása  Egy oldalra (.aspx)  Az egész webhelyre (Web.config) Ez a szöveg jelenik meg a mester oldalon definiált "Main" nevű kontrolban Ez a szöveg jelenik meg a mester oldalon definiált "Main" nevű kontrolban … …

21 21 Alapértelmezett tartalom  Tartalom helyőrzőknek lehet saját tartalmuk (alapértelmezett tartalom)  Ez csak akkor jelenik meg ha a tartalom oldal nem tölti ezt ki... This is default content that will appear in the absence of a matching Content control in a content page... This is default content that will appear in the absence of a matching Content control in a content page

22 22 Mesteroldal mesteroldala  Mesteroldalak egymásba ágyazhatók  Ha egy mesteroldalnak van mesteroldala, akkor az alsóbb mesteroldal  Tölti ki a felsőbb helyőrzőit  De neki is lehetnek saját helyőrzői  Csak forrás nézetben (nincs design támogatás)......

23 23 Elérés kódból  Page.MasterPageFile  Master beállítása futási időben  Pre_Init fázisban vagy hamarabb  Page.Master  System.Web.UI.Page új tulajdonsága  Referencia a mester oldalra  NULL ha nincs mesteroldal  A mester vezérlőinek elérése  A mester public és protected metódusainak és tulajdonságainak elérése  A mester és a tartalom oldalak kód szintű összekapcsolása

24 24 Gyengén típusos mesteroldal Tartalom oldal Mester oldal ((Label) Master.FindControl ("lblTitle")).Text = "Orders";

25 25 Erősen típusos mesteroldal Tartalom oldal Mester oldal.aspx.cs.aspx.cs Master.MasterTitle.Text = "Orders"; public Label MasterTitle { get { return this.lblTitle; } set { this.lblTitle = value; } } public Label MasterTitle { get { return this.lblTitle; } set { this.lblTitle = value; } }

26 26 URL Rebasing  URL hivatkozások a mester oldalban gondot okozhatnak, ha  Mester és tartalom oldal fizikailag külön helyen van  Mester oldalon relatív URL hivatkozás  Megoldás:  Abszolút (/MainPage.aspx) vagy  Alkalmazás relatív (~/MainPage.aspx) URL-ek használata a mesteroldalon \Level1.master MainPage \Default\Default.aspx \Level1.master MainPage \Default\Default.aspx MainPage hivatkozás URL-je: \Default\MainPage.aspx

27 27 Mester oldalak

28 28 Tartalom  Személyre szabhatóság  Felhasználói élmény  Mesteroldalak  Témák  Navigáció  Lokalizáció

29 29 Témák és bőrök  Webhely stílusinformációinak csoportokba gyűjtése  Bőr = vezérlők vizuális jellemzője .skin fájlokban tárolva  Alapértelmezett és nevesített bőrök  Téma = bőrök halmaza, gyűjteménye  Themes alkönyvtárban  Globális és lokális témák

30 30 Bőrök  Alapértelmezett (default)  SkinID nélkül definiált bőrök  Minden olyan adott típusú kontrollra, aminek nincs SkinID tulajdonsága  Nevesített (named)  SkinID-val definiált bőrök  Lehet ugyanabban a fájlban mint az alapértelmezett bőr  A vezérlők SkinID tulajdonságával hivatkozhatunk a nevesített bőrökre

31 31  Egy alkalmazás minden lapjára  Egy lap minden vezérlőjére  Kódból Téma alkalmazása void Page_PreInit (Object sender, EventArgs e) { Page.Theme = "BasicBlue"; } void Page_PreInit (Object sender, EventArgs e) { Page.Theme = "BasicBlue"; }

32 32 Lokális témák App_Themes Shocking- Pink Autumn- Leaves SKIN Webapp_ root Téma neve = Alkönyvtár neve

33 33 Globális témák Themes BasicBlue SmokeAnd Glass SKIN ASP.NET_ ClientFiles Téma neve = Alkönyvtár neve %WINDIR%\Microsoft.NET\Framework\ \ASP.NETClientFiles\

34 34 Theme vs StyleSheetTheme  Theme  a bőrben definiált tulajdonságok felülírják az azonos nevű a lapban lokálisan definiált tulajdonságokat  StyleSheetTheme  Lokálisan definiált tulajdonság írja felül a bőrben definiáltat  Theme és StyleSheetTheme egyszerre 1. StyleSheetTheme tulajdonságok 2. Lokálisan definiált tulajdonságok (felülírva a StyleSheetTheme-et) 3. Theme-ben definiált tulajdonságok (felülírva előzőeket)

35 35 Témák és bőrök

36 36 Tartalom  Személyre szabhatóság  Felhasználói élmény  Mesteroldalak  Témák  Navigáció  Lokalizáció

37 37 Adatvezérelt navigáció  Navigációs felületet nehéz megvalósítani  Kliens oldali scriptek, frissítés, stb.  Új navigációs vezérlőelemek  SiteMapPath – „Kenyérmorzsa” vezérlőelem  SiteMapDataSource – XML webhely térkép  TreeView, Menu – navigációs vezérlők  Publikus webhely térkép és API  Provider alapú  Rugalmas!

38 38 Navigáció - alapok Site Map API Webhely térképek Web.sitemap stb. Vezérlők MenuTreeViewSiteMapPath SiteMap- DataSource SiteMap SiteMapNode XmlSiteMapProviderstb. Providerek

39 39 XML webhely térkép <siteMapNode title=„Kurzusok" url=„Course.aspx" description=„ASP.NET 2.0 kurzusok"> <siteMapNode title="Adminisztrátoroknak" url="Admin.aspx" description=„Adminisztrátori oldal" roles="Admins" /> <siteMapNode title=„Kurzusok" url=„Course.aspx" description=„ASP.NET 2.0 kurzusok"> <siteMapNode title="Adminisztrátoroknak" url="Admin.aspx" description=„Adminisztrátori oldal" roles="Admins" />

40 40 SiteMapNode.Roles  Csak azok a navigációs elemek jelennek meg, amihez joga van a felhasználónak <add name="AspNetXmlSiteMapProvider" … securityTrimmingEnabled="true" siteMapFile="web.sitemap" /> <add name="AspNetXmlSiteMapProvider" … securityTrimmingEnabled="true" siteMapFile="web.sitemap" />

41 41 SiteMapDataSource  Nem látható vezérlőelem  A webhelytérképet reprezentálja  A SiteMapPath, TreeView és Menu vezérlőkhöz adatforrás  Provider alapú  rugalmas!  SiteMap fájlnév megadása  Saját adatforrás megadása

42 42 TreeView vezérlőelem  Hierarchikus struktúra fa szerkezetben való megjelenítésére  Nyitható-zárható szintek  A node-ok kiválaszthatók, navigálni tudnak, és checkbox-ot is tartalmazhatnak  TreeNode objektumokból áll  Deklaratívan, kódból, és adatkötéssel is megadható  On-demand is betölthető  Könnyen definiálható UI

43 43 TreeView webhelytérképből <siteMapNode title="Training" url="Training.aspx" description="Training for.NET developers"> <siteMapNode title="Programming.NET" url="Classes.aspx?id=1" description="All about the.NET Framework" /> <siteMapNode title="Programming ASP.NET" url="Classes.aspx?id=2" description="All about ASP.NET" /> <siteMapNode title="Programming Web Services" url="Classes.aspx?id=3" description="All about Web services"/> <siteMapNode title="Consulting" url="Consulting.aspx" description="Consulting for.NET projects" /> <siteMapNode title="Debugging" url="Debugging.aspx" description="Help when you need it the most" /> <siteMapNode title="Training" url="Training.aspx" description="Training for.NET developers"> <siteMapNode title="Programming.NET" url="Classes.aspx?id=1" description="All about the.NET Framework" /> <siteMapNode title="Programming ASP.NET" url="Classes.aspx?id=2" description="All about ASP.NET" /> <siteMapNode title="Programming Web Services" url="Classes.aspx?id=3" description="All about Web services"/> <siteMapNode title="Consulting" url="Consulting.aspx" description="Consulting for.NET projects" /> <siteMapNode title="Debugging" url="Debugging.aspx" description="Help when you need it the most" /> Web.sitemap

44 44 TreeView On-Demand töltés <asp:TreeView OnTreeNodePopulate="OnPopulate" EnableClientScript="false" RunAt="server"> <asp:TreeNode Text="Populate this node on demand" PopulateOnDemand="true" RunAt="server" />. void OnPopulate (Object sender, TreeNodeEventArgs e) { // Called first time the populate-on-demand node is expanded TreeNode node = new TreeNode ("This node added dynamically"); e.Node.ChildNodes.Add (node); } <asp:TreeView OnTreeNodePopulate="OnPopulate" EnableClientScript="false" RunAt="server"> <asp:TreeNode Text="Populate this node on demand" PopulateOnDemand="true" RunAt="server" />. void OnPopulate (Object sender, TreeNodeEventArgs e) { // Called first time the populate-on-demand node is expanded TreeNode node = new TreeNode ("This node added dynamically"); e.Node.ChildNodes.Add (node); }

45 45 Menu vezérlőelem  Hierarchikus struktúra lenyíló/kinyíló menüben való megjelenítésére  Kiválasztható vagy navigálható menüelem  Vízszintes vagy függőleges orientáció  MenuItem objektumokból áll  Deklaratívan, kódból, és adatkötéssel is megadható  Könnyen definiálható UI

46 46 Menü webhelytérképből Web.sitemap <siteMapNode title="Training" url="Training.aspx" description="Training for.NET developers"> <siteMapNode title="Programming.NET" url="Classes.aspx?id=1" description="All about the.NET Framework" /> <siteMapNode title="Programming ASP.NET" url="Classes.aspx?id=2" description="All about ASP.NET" /> <siteMapNode title="Programming Web Services" url="Classes.aspx?id=3" description="All about Web services"/> <siteMapNode title="Consulting" url="Consulting.aspx" description="Consulting for.NET projects" /> <siteMapNode title="Debugging" url="Debugging.aspx" description="Help when you need it the most" /> <siteMapNode title="Training" url="Training.aspx" description="Training for.NET developers"> <siteMapNode title="Programming.NET" url="Classes.aspx?id=1" description="All about the.NET Framework" /> <siteMapNode title="Programming ASP.NET" url="Classes.aspx?id=2" description="All about ASP.NET" /> <siteMapNode title="Programming Web Services" url="Classes.aspx?id=3" description="All about Web services"/> <siteMapNode title="Consulting" url="Consulting.aspx" description="Consulting for.NET projects" /> <siteMapNode title="Debugging" url="Debugging.aspx" description="Help when you need it the most" />

47 47 SiteMapPath vezérlőelem  „Kenyérmorzsa vezérlő”  A legfelső szinttől az aktuális oldalig vezető utat mutatja  Aktuális oldal  statikus szöveg  Szülők  hivatkozások (hyperlink)  Könnyen definiálható UI  A csomópontok és az elválasztó elemek jól sablonizálhatóak  SiteMapProvider-re épül

48 48 SiteMapPath használata

49 49 SiteMap Providers  SiteMap provider alapú  A webhelytérkép adatait feldolgozza és SiteMapDataSource-nak biztosítja  Aktuális weblap információ meghatározása a webhely térkép alapján  SiteMapPath vezérlőelem forrása  ASP.NET 2.0-ban egy beépített provider  XmlSiteMapProvider  Kiterjeszthető  saját providerek saját adatforrásokhoz

50 50 SiteMap API  System.Web.SiteMap  Webhelytérképet reprezentálja  RootNode  CurrentNode  SiteMapNode  Egyetlen node-ot reprezentál  Node tulajdonságai lekérdezhetők, beállíthatók  Föl, le, oldalra lépkedhetünk a hierarchiában

51 51 URL leképzés  Web.config-ban kell definiálni  Könnyen megjegyezhető címek a bonyolult paraméteres címek helyett  Pontos egyezés estén a bejövő cím leképződik egy másik címre

52 52 Navigáció

53 53 Tartalom  Személyre szabhatóság  Felhasználói élmény  Mesteroldalak  Témák  Navigáció  Lokalizáció

54 54 Lokalizáció  Böngésző nyelvének automatikus felismerése  Címkék megadása  Lokális és globális erőforrás fájlok

55 55 Böngésző preferált kultúrája  Automatikus nyelv detektálás  Culture, UICulture automatikus beállítása  Oldal szinten (.aspx)  Alkalmazás szinten (web.config)  „auto:en-US”  használjuk a böngészőben beállított preferált nyelvet ha tudjuk, egyébként pedig az en-us –t.

56 56 Lokalizációs erőforrások  Erőforrás fájlok  Lokális erőforrások  Minden form-nak saját erőforrásfájl minden támogatott nyelvhez  RESX fájlok az App_LocalResources mappában  Elnevezés:.aspx..resx.aspx.resx (alapértelmezett).aspx.resx (alapértelmezett)  Globális erőforrások  az egész alkalmazásban használható erőforrások  RESX fájlok a ~/App_GlobalResources mappában  Elnevezés:..resx.resx (alapértelmezett).resx (alapértelmezett)

57 57 Erőforrás kifejezések  Deklaratív szintaktika  Lokális és globális erőforrásokhoz is  Runtime, design-time  Formái:  Explicit:  Implicit: <asp:Label ID="Label1" runat="server" Text=" " /> <asp:Label ID="Label1" runat="server" Text=" " />

58 58 Explicit kifejezések  Bármilyen vezérlőelem tulajdonságra használható  Finoman hangolható  Lokális és globális erőforrásokhoz is  Runtime:  Vezérlőelem tulajdonság és erőforrás-érték összerendelés  Design-time:  Vezérlőelemek tulajdonságai az „Expressions…” tulajdonságon keresztül  Lokális erőforrás értékeket jeleníti meg

59 59 Implicit kifejezések  Részben vagy teljes egészében lokalizálni egy vezérlőelemet  Csak lokális erőforrásra alkalmazható  VisualStudio2005 automatikusan tudja generálni  meta:ResourceKey –ek a Page direktívába és a vezérlőkbe  App_LocalResources mappa és.apsx.resx fájl generálása

60 60 Erőforrás hivatkozás  Globális erőforrás  Deklaratív  Csak explicit  Kódból  Erősen típusos  Segédmetódussal <asp:Label ID="Label1" runat="server" Text="" /> Text=" " /> <asp:Label ID="Label1" runat="server" Text="" /> Text=" " /> Label1.Text = Resources...ToString(); Label1.Text = (string) GetAppResourceObject(, ); Label1.Text = (string) GetAppResourceObject(, );

61 61 Erőforrás hivatkozás  Lokális erőforrás  Deklaratív  Explicit  Implicit  Kódból  Csak segédmetódussal <asp:Label ID="Label1" runat="server" Text="" /> Text=" " /> <asp:Label ID="Label1" runat="server" Text="" /> Text=" " /> <asp:Label ID="Label1" runat="server" meta:resourcekey="resource-key-prefix" /> <asp:Label ID="Label1" runat="server" meta:resourcekey="resource-key-prefix" /> Label1.Text = (string) GetPageResourceObject( ); Label1.Text = (string) GetPageResourceObject( );

62 62 Lokalizáció

63 63 Összefoglalás  Könnyen kialakítható egységes felület  Mesteroldalak, témák, bőrök  Személyre szabhatóság  Webkijelző keretrendszer  Egyszerű navigáció  Beépített kontrollok  Kiterjeszthető  Rugalmas!  Erőforrás alapú lokalizáció

64 64 További információk  Fejlesztői Portál:  http://www.devportal.hu http://www.devportal.hu  Webfejlesztés témaközpont:  http://www.devportal.hu/Portal/Webdevelopment.aspx http://www.devportal.hu/Portal/Webdevelopment.aspx  ASP.NET honlap  http://www.asp.net http://www.asp.net  MSDN ASP.NET Developer Center  http://msdn.microsoft.com/asp.net/ http://msdn.microsoft.com/asp.net/  Visual Studio 2005 MSDN Documentation  http://msdn2.microsoft.com http://msdn2.microsoft.com  Visual Web Developer 2005 Express Edition  http://msdn.microsoft.com/vstudio/express/vwd/ http://msdn.microsoft.com/vstudio/express/vwd/  Visual Web Developer 2005 Express Edition MSDN documentation  http://msdn2.microsoft.com/ms178093(en-US,VS.80).aspx http://msdn2.microsoft.com/ms178093(en-US,VS.80).aspx  ASP.NET 2.0 Quickstart tutorial  http://www.asp.net/Tutorials/quickstart.aspx http://www.asp.net/Tutorials/quickstart.aspx  Scott Guthrie blogja  http://weblogs.asp.net/scottgu/ http://weblogs.asp.net/scottgu/

65 65 Kérdések és válaszok Értékelőlapok!

66 66 Délutáni gyakorlatok: V2.520

67 67 © 2006 Microsoft Corporation. Minden jog fenntartva. Az előadás csupán tájékoztató jellegű, a Microsoft Magyarország a benne szereplő esetleges hibákért vagy tévedésekért semmilyen felelősséget nem vállal.


Letölteni ppt "Kereskényi Róbert MSDN Kompetencia Központ Budapesti Műszaki és Gazdaságtudományi Egyetem Automatizálási és Alkalmazott Informatikai Tanszék."
Google Hirdetések