Zobrazenie zoznamu produktov. Neodvolateľnosť neodvolateľná

Do konca tejto kapitoly sme mohli vytvoriť model domény a úložisko bez toho, aby sme sa museli dotknúť projektu používateľského rozhrania. Aby ste sa ale nenudili, zmeníme kurz a začneme MVC Framework používať naplno. Podľa potreby do modelu a úložiska pridáme nové funkcie.

V tejto sekcii vytvoríme kontrolér a metódu akcie, ktoré budú zobrazovať informácie o produktoch v obchode. V súčasnosti máme údaje iba v simulovanom úložisku, ale tomuto problému sa budeme venovať neskôr. Vykonáme tiež počiatočné nastavenie konfigurácia smerovania aby MVC vedelo, ako mapovať požiadavky na aplikáciu na radič, ktorý sa chystáme vytvoriť.

Pridajte ovládač

V projekte SportsStore.WebUI kliknite pravým tlačidlom myši na priečinok Controllers a v kontextovej ponuke vyberte položku Add - Controller. Pomenujte ovládač ProductController a uistite sa, že možnosť Šablóna obsahuje prázdny ovládač. Keď Visual Studio otvorí súbor na úpravu, môžete odstrániť predvolenú metódu akcie, ktorá bola pridaná automaticky, a váš súbor bude vyzerať ako Výpis 7-6.

Výpis 7-6: Počiatočná definícia ProductController
pomocou systému; pomocou System.Collections.Generic; pomocou System.Linq; pomocou System.Web; pomocou System.Web.Mvc; pomocou SportsStore.Domain.Abstrakt; pomocou SportsStore.Domain.Entities; priestor názvov SportsStore.WebUI.Controllers (verejná trieda ProductController: Controller (súkromné ​​úložisko IProductRepository; verejný ProductController (IProductRepository productRepository) (this.repository = productRepository;))))

Odstránením metódy akcie Index pridáme konštruktor, ktorý preberá parameter IProductRepository. To umožní spoločnosti Ninject injektovať závislosť od obchodu s produktmi pri vytváraní inštancie triedy ovládača. Importovali sme tiež obory názvov SportsStore.Domain, aby sme mali prístup k triedam obchodov a modelov bez zadania ich názvov.

Výpis 7-7: Pridanie metódy akcie
pomocou systému; pomocou System.Collections.Generic; pomocou System.Linq; pomocou System.Web; pomocou System.Web.Mvc; pomocou SportsStore.Domain.Abstrakt; pomocou SportsStore.Domain.Entities; priestor názvov SportsStore.WebUI.Controllers (verejná trieda ProductController: Controller (súkromné ​​úložisko IProductRepository; verejný ProductController (IProductRepository productRepository) (this.repository = productRepository;) public ViewResult List () (návrat View (repository.Products);) } }

Toto volanie metódy View (bez zadania názvu zobrazenia) hovorí rámcu, aby vykreslil predvolené zobrazenie pre danú metódu akcie. Odovzdaním zoznamu objektov produktu metóde Zobraziť poskytujeme rámcu údaje na naplnenie objektu Model v zobrazení silného typu.

Pridanie pohľadu

Teraz musíme pridať predvolené zobrazenie pre metódu akcie Zoznam. V editore kódu kliknite pravým tlačidlom myši na metódu Zoznam a v kontextovej ponuke vyberte položku Pridať - Zobraziť. Pomenujte zoznam zobrazení a začiarknite políčko, ktoré vytvára silne napísané zobrazenia, ako je to znázornené na obrázku 7-5.

Obrázok 7-5: Pridanie zobrazenia zoznamu

Do poľa Modelová trieda zadajte IEnumerable ... Tento názov budete musieť zadať; nebude k dispozícii z rozbaľovacieho zoznamu, ktorý nezahŕňa vymenovanie doménových objektov.

V nasledujúcom texte použijeme štandardné rozloženie Razor, ktoré je súčasťou šablóny projektu Basic, aby boli naše názory konzistentné. Začiarknite políčko vedľa položky Použiť rozloženie, ale textové pole nechajte prázdne, ako je to znázornené. Kliknutím na tlačidlo Pridať vytvorte zobrazenie.

Vizualizácia údajov zobrazenia

Vedieť, že model v zobrazení je IEnumerable Zoznam môžeme vytvoriť pomocou slučky Razor foreach, ako je uvedené v zozname 7-8.

Výpis 7-8: Zobrazenie List.cshtml
@model IEnumerable @ (ViewBag.Title = "(! LANG: Produkty"; } !} @foreach (var p v modeli) (

@ p. Meno

@ p. Popis

@ p.Price.ToString ("c")

}

Zmenili sme aj názov stránky. Všimnite si toho, že na zobrazenie údajov o zobrazení nepotrebujeme používať text Razor alebo @:, pretože každý riadok v tele kódu je buď direktíva Razor, alebo začína prvkom HTML.

Rada

Všimnite si toho, že sme vlastnosť Price previedli na reťazec pomocou metódy ToString ("c"), ktorá zobrazuje číselné hodnoty ako menu podľa nastavenia kultúry na vašom serveri. Ak je napríklad server nakonfigurovaný ako en-US, potom (1002,3). ToString ("c") vráti 1,002,30 dolára, ale ak je server nakonfigurovaný ako en-GB, rovnaká metóda vráti 1,002,30 libry. Nastavenia kultúry pre váš server môžete zmeniť pridaním do uzla súboru Web.config nasledujúcu časť: .

Konfigurácia predvolenej trasy

Teraz stačí povedať platforme MVC, že požiadavky prichádzajúce do koreňa lokality (http: // mysite /) je potrebné mapovať na metódu akcie Zoznam triedy ProductController. Za týmto účelom upravíme príkaz v metóde RegisterRoutes v súbore App_Start / RouteConfig.cs, ako je uvedené v zozname 7-9.

Výpis 7-9: Pridanie predvolenej trasy
pomocou systému; pomocou System.Collections.Generic; pomocou System.Linq; pomocou System.Web; pomocou System.Web.Mvc; pomocou System.Web.Routing; priestor názvov SportsStore.WebUI (verejná trieda RouteConfig (verejná statická prázdna RegisterRoutes (RouteCollection trasy) (trasy.IgnoreRoute ("(zdroj) .axd / (* cestaInfo)"); trasy.MapRoute (názov: "Predvolené", URL: "( ovládač) / (akcia) / (id) ", predvolené: nové (radič =" Produkt ", akcia =" Zoznam ", id = UrlParameter.Optional));))))

Zmeňte domov na produkt a index na zoznam, ako je uvedené v zozname. Podrobnejšie o možnostiach smerovania ASP.NET sa budeme zaoberať v kapitole 13. Zatiaľ nám postačí vedieť, že táto zmena bude štandardne smerovať požiadavky na adresy URL na metódu akcie, ktorú sme definovali.

Rada

Všimnite si, že v zozname 7-9 sme nastavili radič na Product, nie ProductController, čo je názov triedy. Toto je súčasť schémy pomenovania ASP.NET MVC, v ktorej názvy tried radičov vždy končia na Controller a táto časť názvu je pri odkazovaní na triedu vynechaná.

Spustenie aplikácie

Všetky základné súčasti aplikácie sú pripravené. Máme ovládač s akčnou metódou, ktorá sa zavolá, keď sa požaduje predvolená adresa URL. Táto metóda akcie sa opiera o falošnú implementáciu nášho rozhrania obchodu, ktorá generuje jednoduché testovacie údaje. Testovacie údaje sú odoslané do pohľadu, ktorý sme priradili k metóde akcie, a vytvárajú jednoduchý zoznam s informáciami o každom produkte. Ak spustíte aplikáciu, uvidíte výsledok znázornený na obrázku 7-6.

Obrázok 7-6: Kontrola základných funkcií aplikácie

Toto je typický vývojový vzor pre rámec ASP.NET MVC. Prispôsobeniu venujeme pomerne veľa času, ale potom k vývoju základnej funkcionality aplikácie dôjde veľmi rýchlo.

Ok, takže som nový v celom svete MVC, ale zdá sa, že je to veľmi dobrý spôsob, ako veci dokončiť, a snažím sa, aby to tu fungovalo.

Problém je v tomto: nemôžem dostať údaje z mojej tabuľky v databáze SQL do jednoduchého rozbaľovacieho formulára na mojej registračnej stránke.

Len netuším, kam vložiť materiál, kde je kód na otvorenie tabuľky, vybrať identifikátory, kam umiestniť odpoveď. Napísať a ako ju odoslať do zobrazenia?

Môj model je takýto:

Verejní užívatelia triedy (názov verejného reťazca (get; set;) public int user_id (get; set;))

Public ActionResult ListUser () (návrat View ();)

A môj názor je tento:

@model Community.Models.users

Googlil som 2 dni a pozrel som si niekoľko videí na youtube, ale bezvýsledne som to nenašiel. Je tu prosím niekto s nejakými znalosťami? A pomenujte mi prosím dobré návody a / alebo fóra, kde nájdem ďalšie otázky, ktoré by som mohol mať

V tomto projekte stále nemáme šťastie.

Vytváram formulár a v tomto formulári chcem db-loop (IEnumerable). Súčasný model však nie je čitateľný. Skoro som uviazol pri pohľade na veľa návodov a všetky uvádzajú iba jedno spojenie. Čo keď potrebujem dva modely?

Tu je môj ovládač. Myslel som, že musíte zoznam predložiť na zobrazenie, nie?

Verejná registrácia výsledku akcie () (vrátiť zobrazenie (db.users.ToList ());)

Ako získam tento zoznam podľa môjho názoru bez modelu IEnumerable?

@neoistheone, tvoj príklad mi veľmi nepomohol, môj DB sa otvára takto:

Private DataBaseContext db = new DataBaseContext ();

a neviem, ako to urobiť, ale otvára to spojenie. Skúšal som toľké hodiny, len hlúpo, dlho som nespal!

Používam programovanie ASP-Classic fyi a toto je môj prvý seriózny pokus o obnovenie znalostí o modernom jazykovom programovaní a OOP.

6 odpovedí

Pridajte SelectList do svojho modelu:

Verejný SelectList DropDownList (get; set;)

vytvorte triedu pre túto zbierku:

Verejná trieda MyListTable (public string Key (get; set;) public string Display (get; set;))

a potom do vášho ovládača načítajte údaje z triedy MyListTable z databázy:

Var list = nový zoznam (); pomocou )) (list.Add (new MyListTable (Key = rdr.GetString (0), Display = rdr.GetString (1)));)))) var model = new users (); model.DropDownList = nový SelectList (zoznam, „Kľúč“, „Zobraziť“);

a nakoniec musíte svoj model poslať na zobrazenie:

Návratový pohľad (model);

Teraz v Razore môžete zobraziť toto:

@ Html.DropDownListFor (m => Model.DropDownList);

Tieto veci môžete samozrejme nazvať lepšími menami, ale chápete.

Odpovede sú už skvelé, ale tu je ďalší prístup.

Používate ako model používateľa, ListUserViewModel ako model zobrazenia a UserController ako ovládač. Úlohou modela pohľadu je prenášať všetky informácie potrebné na zobrazenie na stránke z ovládača bez pridávania nechcených vlastností do triedy modelov. V zozname úloh vášho používateľa z databázy v rozbaľovacom zozname.

Verejná trieda Používateľ // Mimochodom, pri pomenovaní triedy používajte jednotné číslo (názov verejného reťazca (get; set;) public int user_id (get; set;))

Zobraziť model

Verejná trieda ListUserViewModel (verejný zoznam Používatelia (získať; nastaviť;))

ovládač

Verejná trieda UserController: Controller (private DataBaseContext db = new DataBaseContext (); public ActionResult ListUser () (var users = db.Users.ToList (); var viewModel = new ListUserViewModel (Users = users); return View (viewModel);) )

Teraz ako model vo svojom zobrazení použite ListUserViewModel namiesto User

@model Community.Models.ListUserViewModel

a rozbaľovací zoznam

@ Html.DropDownListFor (m => m.Users, new SelectList (Model.Users, "user_id", "name"), "")

Vysvetlenie:

Vytvárate rozbaľovaciu ponuku pre používateľov so serverom Model.Users ako zdrojom údajov zoznamu. „user_id“ ako hodnota vybratého používateľa a „name“ ako menovka zobrazenia. posledný argument (vložil som prázdny reťazec „“) je predvolená hodnota, ktorá sa zobrazí pred výberom v rozbaľovacej ponuke.

Dúfam, že to pomôže vám alebo niekomu inému.

Skús to,

Verejný reťazec CoutryID (get; set;) verejný zoznam CountryList (get; set;)

Metóda ovládača, ktorá naplní zoznam

Verejný zoznam getCountryList () (pomocou (QRMG_VendorPortalDataContext _context = new QRMG_VendorPortalDataContext ()) (return (from c in _context.Countries where c.IsDeleted == false select c) .ToList ();)))

Rozbaľovací zoznam v zobrazení

@ Html.DropDownListFor (m => m.CoutryID, nový SelectList (Model.CountryList, "CoutryID", "Value"))

toto je moja tabuľka v databáze

Pozrite sa na môj akčný ovládač

// GET: Letters public ActionResult Index () (ViewBag.LetterStatus = new SelectList (LetterStatusService.GetAllLettersStatus (), "Id", (CultureHelper.GetCurrentCulture () == "ar")? "NameArabic": "Name", Request .QueryString ["LetterStatus"]); návrat View ();)

a vo výhľade

@ Html.DropDownList ("LetterStatus")

konštruktér, ktorý používam

Nový SelectList (zoznam myListFromDatabase, reťazec PropertyNameOfValueInHtml, reťazec PropertyNameOfDesplayInHtml, reťazec SelectedItemValue);

tento Request.QueryString ["LetterStatus"], pretože odosielam vybrané položky do QuerySrting

a na základe CurrentCulture som vybral, ktorý stĺpec sa má zobraziť

a výsledok

ale myslím si, že najlepší spôsob, ako to urobiť, je: - získať alebo vytvoriť prvky, potom ich opakujte a prenášajte, aby ste značku select vygenerovali ručne. Tento prístup som dobre popísal

25.11.06 12,7K

Úvod

ASP.NET je jednou zo súčastí .NET Framework. V krátkosti uvedieme hlavné vlastnosti tejto technológie.

* CLR za behu jazyka
* Knižnica tried .NET Framework
* Jazyky .NET (C #, VB.NET, J # a ďalšie)
* ADO.NET
* ASP.NET
* Webové služby
* Stredný jazyk MSIL (Microsoft Intermediate Language). Je to assembler pre runtime CLR.

ADO.NET je sada tried na prístup k databázam Microsoft SQL Server, zdrojom údajov OLEDB a súborom XML.

Rôzne časti vášho projektu môžu byť napísané v rôznych jazykoch, hovorí sa tomu interoperabilita. Pokúsime sa napísať projekt, kde jedna zo stránok bude v jazyku Visual Basic a druhá v jazyku C #.

Počítačové jazyky sú zostavované a interpretované. V procese kompilácie programu napísaného v kompilovanom jazyku sa vytvorí spustiteľný súbor (v systéme Windows - exe). Beží rýchlo, ale nemôže bežať na inej platforme. Stroj, na ktorom beží, musí mať podobnú konfiguráciu. Ak napríklad program používa dll, potom musí byť táto knižnica nainštalovaná aj na cieľovom počítači. Interpretované programy sú zostavené za behu, takže bežia pomalšie, ale nie sú špecifické pre počítač. V NET Framework sa používa dvojstupňová kompilácia, to znamená, že prvým krokom je kompilácia do MSIL a druhým je kompilácia „Just-in-time“ kompilátorom za behu. Kompilátor JIT optimalizuje kód pre počítač, na ktorom je spustený. V ASP.NET je stránka kompilovaná do MSIL pri prvom prístupe klienta na stránku. Spolu s ním sú zostavené aj triedy, ktoré používa. Ak používate Visual Studio 2005, namiesto čakania na prvú požiadavku môžete vynútiť kompiláciu všetkých stránok v projekte. To vám umožní identifikovať syntax a ďalšie chyby.

MSIL je strojovo nezávislý montér. Môže fungovať na akomkoľvek počítači, kde je nainštalovaný CLR. Projekt Mono sa pokúša preniesť CLR na iné platformy, čo umožňuje komunikáciu serverov bežiacich na rôznych platformách.

S projektom sa môžete zoznámiť na webovej stránke http://mono-project.com

Na stránke http://go-mono.com/archive/xsp-0.10.html je server XSP - ASP.NET, ktorý môže slúžiť ako rozšírenie servera Apache - hlavného servera systémov * nix -.

Ako funguje ASP.NET

Keď nainštalujeme .NET, súbor aspnet_isapi.dll sa tiež umiestni do zodpovedajúcich adresárov C: WINDOWSMicrosoft.NETFramework. Toto je rozšírenie ISAPI na prijímanie žiadostí pre aplikácie ASP.NET ( * .aspx * .asmx atď.) A na vytváranie pracovných procesov aspnet_wp.exe na spracovanie požiadaviek. Internetový server - buď IIS zabudovaný do WebMatrix, alebo zabudovaný do Visual Studio Cassini - používa toto rozšírenie, keď potrebujú zvládnuť prístup na stránky s príponou aspx.

Tento modul analyzuje obsah stránok aspx spolu so súborom za kódom a vygeneruje triedu jazyka stránky s objektom Page. Stránka aspx sa líši od bežnej stránky HTML prítomnosťou ovládacích prvkov servera, ktoré sú popísané špeciálnymi značkami. Aby sme pochopili, ako ASP.NET funguje, je dôležité si uvedomiť, že každá riadiaca značka má zodpovedajúceho člena triedy stránok. Napríklad,

prevedené na

@__ctrl = nový globálny :: System.Web.UI.WebControls.Label ();

Hlavnou úlohou objektu Page je odoslať HTML kód do výstupného toku. Táto trieda je zostavená do dll, ktorá je načítaná do procesu webového servera. Následné požiadavky na stránku rieši aj dll, ak sa zdrojový kód stránky nezmení. Všetky tieto súbory nájdete v adresári Temporary ASP.NET Files aktuálnej verzie .NET. Ak pracujeme vo vývojovom prostredí Visual Studio 2005 alebo VWD, pre každý projekt sa vytvorí podadresár.

Typy stránok projektu a priečinkov

Nové súbory je možné do projektu pridať prostredníctvom dialógového okna Nový súbor. Ak zrušíte začiarknutie políčka „Umiestniť kód do samostatného súboru“, Visual Studio vytvorí jeden súbor obsahujúci stránku aj kód na jeho spracovanie (v štýle WebMatrix).

Všetky súbory sú umiestnené v adresári projektu. Naopak, všetky súbory, ktoré sú umiestnené v adresári projektu, sa stanú jeho súčasťou. Neexistuje žiadny konkrétny súbor .csproj pre webové stránky, ktoré by uvádzali jeho súčasti, ako tomu bolo v predchádzajúcich verziách programu Visual Studio. Štruktúra riešenia je popísaná v textovom súbore.sln. Riešenie môže zahŕňať viacero webových stránok a knižníc.

ASP.NET 2.0 má špeciálne podadresáre projektov pre rôzne typy súborov. Priečinok App_Code napríklad obsahuje verejné triedy, textové súbory a niektoré ďalšie (DataSet, diagram triedy). Súbory s príponami .cs alebo .vb, ktoré sa tam nachádzajú, sa automaticky skomplikujú na požiadanie ktorejkoľvek stránky projektu. Aplikácia App_Data obsahuje zdroje údajov použité v projekte - databázy Access a Microsoft SQL, súbory XML. Do tohto adresára sa nedá dostať zvonku, ale iba zo samotnej aplikácie. Priečinok Témy obsahuje témy projektu (Kapitola 13). Použitie motívov vám umožňuje prispôsobiť a spravovať konzistentný vzhľad a dojem z vašich stránok. App_GlobalResources obsahuje zdroje, ako napríklad reťazcové tabuľky, ktoré môžete vytvoriť v rôznych jazykoch. Jazyk zdroja sa vyberá automaticky v závislosti od nastavení prehliadača používateľa. Priečinok App_WebReferences obsahuje odkazy na používané webové služby.

Môžete si vytvoriť vlastný podadresár projektu, napríklad na ukladanie obrázkov.

Projekt v 2 jazykoch

Webový projekt sa skladá zo stránok a tried aspx, ktoré tieto stránky používajú (a samozrejme z rôznych zdrojov). Súbory s triedami, ku ktorým je prístup z rôznych stránok, sú umiestnené v špeciálnom priečinku App_Code. Keď sú skompilované, umiestnia sa do jednej zostavy - knižnice dll v prenosnom spustiteľnom formáte. Nezáleží na tom, v akom jazyku je trieda napísaná, pokiaľ ide o jazyk .NET.

V projekte je možné použiť aj pripravené zostavené zostavy tretích strán. Sú umiestnené v priečinku Kôš. Musia byť však importované do projektu.

<%@ Import Namespace="MyCustomNamespace" %>

Vytvorte nový projekt. Pridajte doň súbor a vyberte typ súboru Trieda a jazyk Visual Basic. Samotné prostredie ponúkne jeho umiestnenie v priečinku Code. Nazvime to CustomClass. Bude mať veľmi jednoduchý kód. Len jedna funkcia, ktorá pridáva slovo Hello k názvu odovzdanému ako parameter.

Importuje Microsoft.VisualBasic Verejná trieda CustomClass Verejná funkcia GetMessage (názov ByVal ako reťazec) Ako reťazec Návrat „Ahoj“ a názov Koniec Funkcia Koncová trieda

Pridajte stránku CodeFolder_cs.aspx do svojho projektu. Táto stránka je napísaná v jazyku C #, ale vytvára triedu napísanú vo VB.NET.

<%@ page language="C#" %> Vložené stránky ASP.NET

Vitajte v ASP.NET 2.0!

Zadajte svoje meno:

Stránka definuje formulár, ktorý sa podobá formuláru aplikácie Windows. Je na ňom tlačidlo, na ktorého kliknutie sa spracuje vo funkcii Button1_Click. Vytvorí triedu a zavolá jej funkciu GetMessage s parametrom, ktorý je prevzatý z ovládacieho prvku úprav. Návratová hodnota je zapísaná do prvku Label1. V jednoduchšej verzii to vyzerá takto:

Label1.Text = „Dobrý deň“ + TextBox1.Text;

Triedu je možné napísať v jazyku C # a použiť ju zo stránky v programe Visual Basic.

pomocou systému; public class CustomClass2 (public String GetMessage (String input) (return "Hello from C #" + input;)) CodeFolder_vb.aspx kód stránky:

Do adresára App_Code je však možné umiestniť iba jeden jazyk. Ak existujú súbory v rôznych jazykoch, projekt sa nedá skompilovať. Aby ste mohli používať dva jazyky, musíte vytvoriť podadresár, pridať ho do súboru web.config a vložiť doň súbory v inom jazyku.

Registrácia v súbore web.config:

... ...

Smerníc

Každá stránka aspx obvykle obsahuje smernice, pomocou ktorých môžete ovládať správanie stránky. Môžete si ich predstaviť ako jazyk, v ktorom komunikujete s prekladačom a hovorí vám, ako zaobchádzať s danou stránkou. Smernice sú zvyčajne umiestnené na začiatku súboru. So smernicou Stránka sme sa už stretli v prvej prednáške.

Syntax deklarácie smerníc je nasledovná:

<%@ %>

Môžete deklarovať niekoľko smerníc súčasne:

<%@ %>

V ASP.NET 2.0 je 11 smerníc.
Popis atribútov smernice
@Montážny názov
Src Importuje zostavu so zadaným názvom na stránku alebo ovládací prvok.
@Control je rovnaký ako stránka. Používa sa na nastavenie vlastností pri vytváraní vlastných ovládacích prvkov.
Rozhranie @Implements Označuje, že trieda tejto stránky implementuje dané rozhranie
@Import Menný priestor Importuje priestor názvov
@Master je rovnaký ako stránka. Vzťahuje sa na stránky šablóny návrhu (vzorová stránka). Novinka v ASP.NET 2.0
@MasterType TypeName
VirtualPath Poskytuje silne napísaný odkaz na triedu obsiahnutú v šablóne návrhu. Umožňuje vám prístup k vlastnostiam tejto triedy.
Trvanie @OutputCache
Poloha
VaryByCustom
VaryByHeader
VaryByParam
Stránka VaryByControl Ovláda alebo ukladá do vyrovnávacej pamäte ovládací prvok. Podrobnejšie je to popísané v prednáške 15.
@Page pozri nižšie Atribúty súvisiace s touto stránkou. Používa sa iba v súboroch s príponou aspx
@PreviousPageType TypeName
VirtualPath Stránka, z ktorej boli odoslané údaje zadané používateľom. Novinka v ASP.NET 2.0. Predtým stránky iba uverejňovali príspevky pre seba.
@Referenčná stránka
Ovládací prvok Stránka alebo ovládací prvok, ktorý sa má kompilovať s týmto
@Zaregistrujte sa
Menný priestor
Src
TagName
TagPrefix Vytvára aliasy pre priestory názvov a vlastné ovládacie prvky

Teraz sa pozrime bližšie na 2 z nich - Stránka a Import.

Smernica stránky

Smernica Stránka vám umožňuje nastaviť vlastnosti stránky, ktoré sa použijú v čase kompilácie. Táto smernica sa používa častejšie ako ostatné, preto ju treba zvážiť podrobnejšie.

Najdôležitejšie atribúty smernice sú uvedené v tabuľke:

AutoEventWireup Automatické spracovanie udalostí na stránke
Nárazník Ovláda ukladanie do vyrovnávacej pamäte stránky. Štandardne uložené vo vyrovnávacej pamäti
ClassName Umožňuje vám priradiť názov triedy generovanej touto stránkou
CodeFile Kódový názov súboru pre túto stránku
Kultúra Nastavuje súbor regionálnych možností, t.j. jazyk, formát meny, dátumy, čísla
Ladiť Ak je to pravda, ladiace informácie sa vytlačia na stránku
Trace Výstup stopových informácií
EnableViewState Ukladá sa stav stránky. Štandardne je uložený.
EnableTheming Umožňuje povoliť alebo zakázať podporu pokožky. Štandardne povolené
Dedí Trieda, z ktorej je trieda tejto stránky zdedená v technológii založenej na kóde
IsAsync Udáva, či sa stránka spracúva asynchrónne.
Jazyk Jazyk použitý vo vloženom kóde
Úroveň varovania Najvyššia povolená úroveň varovania kompilátora
Možnosti kompilátora Možnosti kompilátora

Menné priestory triednej knižnice

Knižnica tried FCL obsahuje tisíce tried. Kvôli jednoduchosti použitia sú skombinované do menných priestorov. Aby sa odkazovalo na triedy deklarované v priestore názvov bez uvedenia úplnej cesty, musí byť importované do projektu. Ak chcete pracovať so súbormi XML, musíte importovať priestor názvov System.XML. Stránky s kódom C # ako vždy používajú direktívu using.

pomocou systému. XML;

Na stránke aspx - Direktíva importu

<%@ Import Namespace= "System.XML " %>

Každý priestor názvov vyžaduje samostatnú direktívu pre import.

Programy Visual Studio .NET a VWD predvolene obsahujú najčastejšie používané priestory názvov na stránke C #. Tieto menné priestory nemusíte importovať na stránku aspx.

pomocou systému; pomocou System.Data; pomocou System.Configuration; pomocou System.Collections; pomocou System.Web; pomocou System.Web.Security; pomocou System.Web.UI; pomocou System.Web.UI.WebControls; pomocou System.Web.UI.WebControls.WebParts; pomocou System.Web.UI.HtmlControls;

Obor názvov System.Web.UI napríklad obsahuje triedu Page, bez ktorej nemôže existovať žiadna stránka ASP.NET; System.Web obsahuje HttpRequest a HttpResponse.

Prehliadač tried

Ako rozoznám, ktoré triedy sú v knižnici tried .NET? Na to sú určené Object Browser (Visual Studio 2005) a Class Browser WebMatrix. Ak chcete otvoriť prehliadač objektov v programe Visual Studio 2005 alebo VWD Express, vyberte položku ponuky Zobraziť-> Prehliadač objektov. Ak používate WebMatrix, potom je Class Class Browser umiestnený v rovnakom priečinku ponuky Windows ako WebMatrix - Všetky programy -> ASP.NET WebMatrix. Prehliadač tried ASP.NET je súčasťou sady Framework SDK.

Všetky dostupné priestory názvov sú zobrazené ako uzly v stromovej štruktúre. Máme záujem o System.Web. Rozbaľte tento uzol. Vnútri boli ďalšie menné priestory. Rozbaľte System.Web.UI. Existuje veľké množstvo tried, rozhraní, delegátov, enumerácií. Poznajú sa podľa ikon. Ikona delegáta napríklad vyzerá ako kufor.

- Trieda

- rozhranie

- udalosť

- enumerácia

- metóda

Vyberte triedu stránky. V pravom okne sa zobrazí zoznam jeho metód, polí a udalostí. Ak vyberiete metódu, jej popis sa zobrazí v treťom okne pod druhým. Vnútri triedy sú ďalšie dva priečinky - Základné triedy a podradené triedy. Všetky je možné si aj prezrieť. Prehliadač objektov tiež zobrazuje triedy aktuálneho projektu. Ak sú triedy okomentované značkami generovania dokumentácie XML, sú tieto informácie tiež viditeľné, napríklad Súhrn, Parametre, Hodnoty, Návraty.

Pri skúmaní vlastnosti IsPostBack môžete vidieť, že má booleovskú hodnotu a je len na čítanie.

Overovanie zhody s normami

Existujú rôzne štandardy pre HTML a XHTML. Neskoršie štandardy majú prísnejšie požiadavky, napríklad XHTML 1.1 nepovoľuje používanie
a ďalšie jednoduché značky bez koncovej lomky
... Staré štandardy zároveň nepodporujú nové značky.

Hlavička požiadavky HTTP určuje štandard dokumentu, Visual Studio 2005 na všetkých stránkach uvádza nasledujúci štandard:

Tento štandard vyžaduje v značke atribút xmlns - odkazy na webovú stránku s popisom štandardu.

Mnoho stránok vytvorených pre predchádzajúce verzie ASP.NET tento atribút nemá. Panel s nástrojmi na úpravu zdrojového kódu HTML tiež obsahuje rozbaľovací zoznam, v ktorom môžete vybrať štandard alebo verziu prehliadača, pre ktorý je táto stránka určená. Stránka sa automaticky kontroluje podľa tohto štandardu.
Vlastnosti stránky

Stránka je chrbticou všetkého vo webovej aplikácii.

Trieda System.Web.UI.Page zapuzdruje funkcie potrebné na vytváranie a vykresľovanie stránok ASP.NET.

Každá stránka ASP.NET je objektom triedy, ktorý je automaticky generovaný jadrom ASP.NET. Trieda dedí z triedy spojenej so stránkou, ak používame kód za kódom, alebo priamo dedí zo stránky System.Web.UI.Page, ak je na stránke vložený kód C #. Prostredie tiež vytvára predvolený konštruktor.

Na overenie toho môžeme vytvoriť stránku „PageType.aspx“:

<%@ Page Language="C#" %> Typ stránky

<% Response.Output.Write("Тип данной страницы {0}",this.GetType()); %>
<% Response.Output.Write("Базовый тип данной страницы {0}",this.GetType().BaseType); %>

Tu je výsledok:


Základný typ tejto stránky je System.Web.UI.Page

Rovnaká stránka bola vytvorená pomocou technológie rozdelenia kódu.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PageType.aspx.cs" Inherits="PageType" %>

píše výsledok

Typ tejto stránky je ASP.pagetype_aspx
Základný typ tejto stránky je PageType

Skutočnosť, že PageType dedí zo súboru System.Web.UI.Page, je zapísaná v súbore s kódom:

verejná čiastočná trieda Typ stránky: System.Web.UI.Page

K aktuálnemu objektu stránky je možné pristupovať ako k premennej stránky. Stránka je kontajner ovládacích prvkov pre túto stránku, preto obsahuje zbierku ovládacích prvkov. Ak tag Ak je prítomný atribút runat = „server“, stránka obsahuje pole Záhlavie, pomocou ktorého môžete ovládať názov stránky. Zmeňte napríklad názov stránky v hlavičke prehliadača, priraďte kaskádový súbor so štýlmi.

Dobrý deň, ASP.NET

Naučte sa programovať v ASP.NET

V tomto prípade sme zmenili text nadpisu. Spustite túto stránku. Vo výslednom HTML vnútri značky už neexistuje „stránka bez názvu“, ale „nový názov“, ktorý bol nainštalovaný prostredníctvom stránky Page.Header.Title. Značka bola upravená <p>Čo sa odrazilo takto:</p> <p><style type="text/css"> p { color:Blue;background-color:Beige; } </style></p> <p>Externá stránka CSS bola importovaná zo súboru.</p> <p><link href="printable.css" rel="stylesheet" type="text/css" /><style type="text/css"></p> <p>Если атрибут AutoEventWireup, который присутствует в заголовке страниц, генерируемых VS, установлен, то методы с префиксом Page_ автоматической назначаются обработчиками событий страницы.</p> <p>У страницы есть два важных свойства — Response и Request. Свойство Response имеет тип HttpResponse. Response страницы можно воспринимать как выходной поток. Весь HTML код генерируемой страницы в принципе может быть выведен через запись в этот поток. Это был обычный способ работы разработчиков asp. Но в ASP.NET есть более удобные средства вывода данных с помощью серверных элементов управления. Response лучше использовать для записи Cookies, для задания различных параметров заголовка – управлять кэшированием, свойством Expires.</p> <p>Вот пример из MSDN:</p> <p>HttpCookie MyCookie = new HttpCookie("LastVisit"); DateTime now = DateTime.Now; MyCookie.Value = now.ToString(); MyCookie.Expires = now.AddHours(1); Response.Cookies.Add(MyCookie);</p> <p>Можно поменять кодовую страницу.</p> <p><head runat="server"> <%Response.Charset = "windows-1251"; %> <title>Русская кодировка

Функция Response.Redirect перенаправляет браузер на другую страницу.

Response.Redirect("NavigationTarget.aspx?name=" + System.Web.HttpUtility.UrlEncode(Name.Text);

Здесь формируется командная строка с параметрами QueryString, которые целевая страница может прочитать.

Аналогично свойство Request – это запрос, переданный на сервер для вывода нужной страницы. Он имеет тип HttpRequest. В нем хранится все о клиенте, включая настройки его браузера, файлы-cookie и данные, введенные им в форму.

NameLabel.Text = Server.HtmlEncode(Request.QueryString["Name"]);

События страницы

Работа среды ASP.NET со страницей начинается с получения и обработки Web-сервером IIS запроса к данной странице и передачи этого запроса среде выполнения ASP.NET. Среда выполнения анализирует, нужно ли компилировать страницу или можно выдать в качестве ответа страницу из кэша.

Затем начинается жизненный цикл страницы. Он начинается с этапа PreInit. После получения запроса среда выполнения загружает класс вызываемой страницы, устанавливает свойства класса страницы, выстраивает дерево элементов, заполняет свойства Request и Response и свойства UICulture и вызывает метод IHttpHandler.ProcessRequest. После этого среда выполнения проверяет, каким образом была вызвана эта страница, и если страница вызвана путем передачи данных с другой страницы, о чем будет рассказано далее, то среда выполнения устанавливает свойство PreviousPage.

На этом этапе устанавливается также свойство IsPostback объекта Page, которое позволяет узнать, в первый ли раз загружается форма или она должна формироваться как результат обработки данных, введенных пользователем.

В обработчиках событий страницы можно проверить это свойство:

if (!Page.IsPostBack) { // обрабатывать }

Дальше происходит инициализация страницы – событие Init. Во времени инициализации страницы создаются дочерние пользовательские элементы управления и им установливаются свойства id. В это же время к странице применяются темы оформления. Если страница вызвана в результате постбэка, то на этом этапе данные, отправленные на сервер, еще не загружены в свойства элементов управления. Программист может инициализировать их свойства.

Если на странице существуют валидаторы(классы проверки данных, см. лекцию 5), то для них вызывается метод Validate(). Затем вызываются обработчики событий (при условии, что страница генерируется в ответ на действия пользователя).

В методе Render генерируется сам HTML-код выводимой страницы. При этом страница вызывает соответствующие методы дочерних элементов, те – методы своих дочерних элементов. В методе Render код выводится в Response.OutputStream. Сама страница тоже считается элементом управления – класс Page является наследником класса Control. Если на странице есть блоки отображения, они становятся частью функции отрисовки (rendering).

Наконец, страница выгружается из памяти сервера и происходит событие Unload.

Во время жизненного цикла страницы происходят различные события. Можно включить трассировку страницы, чтобы посмотреть порядок из возникновения.

<%@ Page Language="C#" Trace ="true" TraceMode="SortByTime" %>

Во время трассировки не выводится событие Unload, потому что оно происходит, когда весь код уже выведен. Во время обработки этого события нужно освободить ресурсы, например соединения с базами данных или открытые файлы.

Полный список событий страницы, которые можно переопределить в классе страницы:

* PreInit
* Init
* InitComplete
* PreLoad
* Load
* LoadComplete
* PreRender
* PreRenderComplete
* Unload

Для всех событий определены обработчики – виртуальные функции OnInit, OnLoad. Когда AutoEventWireup равно true, в классе автоматически объявляются функции-обработчики событий с префиксом Page — Page_Load, Page_Init и так далее. Одно из самых популярных событий – это Page_Load. Создавая новую страницу, Visual Studio создает обработчик этого события. Здесь можно изменить внешний вид элементов и создать новые. Можно установить AutoEventWireup в false. В таком случае надо писать перегруженные версии виртуальных функций.

protected override void OnInit(EventArgs e) { }

Так можно добиться ускорения работы страницы.
Способы внедрения кода ASP.NET в страницу.

Есть три способа внедрить код на программном языке в страницу aspx.

Блок называется блоком объявления кода.

Тег