Parāda preču sarakstu. Atbildība neatsaucama

Mēs varētu pilnībā izveidot domēna modeli un repozitoriju, pat neietekmējot UI projektu. Bet tā, ka jūs neesat garlaicīgi, mēs mainīsim kursu un sāktu izmantot MVC sistēmu pilnā spēkā. Mēs pievienosim jaunas funkcijas modelī un uzglabāšanai pēc vajadzības.

Šajā sadaļā mēs izveidosim kontrolieri un darbības metodi, kas parādīs informāciju par krājumiem repozitorijā. Šobrīd mums ir dati tikai simulētā uzglabāšanai, bet mēs atrisināsim šo jautājumu vēlāk. Mēs arī veiksim sākotnējos iestatījumus. maršrutēšanas konfigurācijasLai MVC ir zināms, kā parādīt lietojumprogrammu pieprasījumus kontrolierim, ko mēs gatavojamies izveidot.

Pievienot kontrolieri

Ar peles labo pogu noklikšķiniet uz mapes kontrolieriem sportstore.Webui projektā un konteksta izvēlnē izvēlieties Pievienot - kontrolieris. Piešķirt kontroliera nosaukumu ProductController un pārliecinieties, vai veidnes opcija satur tukšu kontrolieri. Kad Visual Studio atver failu, lai rediģētu, jūs varat izdzēst noklusējuma darbības metodi, kas ir pievienota automātiski, un jūsu fails izskatīsies sarakstā 7-6.

Listing 7-6: Primārā ProductController definīcija
izmantojot sistēmu; izmantojot system.Collections.Genic; Izmantojot system.linq; izmantojot System.Web; Izmantojot system.Web.mvc; Izmantojot sportsstore.domain.abstract; izmantojot sportsstore.domain.entities; Namespace sportsstore.webui.controllers (publiskā klase ProductController: kontrolieris (privātais iproductRepository repositroller (iproductRepository productroller) (šis.Repository \u003d productrepository;)))

Indeksa darbības metodes noņemšana, mēs pievienojam dizaineru, kas pieņem iProductRepository parametru. Tas ļaus NINECT, lai īstenotu atkarību no preču krātuve, kad tas radīs kontrolierīces klases gadījumu. Mēs arī importējām SportsTore.Domain Namespaces, lai mēs varētu piekļūt repozitorija un modeļu klasēm, nenorādot savus vārdus.

Listing 7-7: Pievienojiet darbības metodi
izmantojot sistēmu; izmantojot system.Collections.Genic; Izmantojot system.linq; izmantojot System.Web; Izmantojot system.Web.mvc; Izmantojot sportsstore.domain.abstract; izmantojot sportsstore.domain.entities; Namespace sportsstore.webui.controllers (publiskā klase ProductController: kontrolieris (publiskais productontroller; publiskais productontroller (iproductRepository \u003d productRepository;) publiskais skatu uzskaitījums () (atgriešanās skats (repozitorija.products);) } }

Šāds aicinājums uz skata metodi (nenorādot nosaukuma nosaukumu), norāda platformu, lai vizualizētu noklusējuma pārstāvību šīs darbības metodes. Pēc saraksta saraksta saraksta produktu objektiem skatīšanas metodē mēs nodrošinām platformas datus, lai aizpildītu modeļa objektu stingri drukātā skatā.

Pievienot pārstāvību

Tagad mums ir nepieciešams pievienot noklusējuma skatu uz saraksta darbības metodi. Ar peles labo pogu noklikšķiniet uz saraksta metodes kodu redaktorā un izvēlieties Pievienot - skatu konteksta izvēlnē. Piešķirt saraksta nosaukumu un pārbaudiet iespēju, kas rada stingri drukātus skatus, kā parādīts 7-5 attēlā.

7-5. Attēls: Pievienot saraksta pārstāvību

Laukā modeļa laukā ievadiet ieņemamie . Jums būs jāizdrukā šis vārds; Tas nebūs pieejams nolaižamajā sarakstā, kurā nav ietverts domēna objektu nodošana.

Nākotnē mēs izmantosim standarta skuvekļa izkārtojumu, kas ir iekļauts pamatprojekta veidnē, lai mūsu viedokļi izskatītos vienādi. Pārbaudiet izvēles rūtiņu Izkārtojuma opcija, bet atstājiet teksta lodziņu tukšu, kā parādīts attēlā. Noklikšķiniet uz pogas Pievienot, lai izveidotu skatu.

Mēs vizualizējam prezentācijas datus

Zinot, ka prezentācijas modelis ir Ienummaring Mēs varam izveidot sarakstu, izmantojot foreach ciklu skuveklī, kā parādīts 7-8 sarakstā.

Listing 7-8: List.cshtml pārstāvniecība
@Model Ienumerable. @ (Viewbag.title \u003d "(! Lang: produkti"; } !} @Foreach (var p modelī) (

@ P.Name.

@ P.Description.

@ p.price.Tostring ("C")

}

Mēs arī mainījām lapas nosaukumu. Lūdzu, ņemiet vērā, ka mums nav nepieciešams izmantot razor tekstu vai @ vienumus: lai parādītu skatu datus, jo katra līnija ķermeņa kodā ir vai nu no HTML elementa sākas no HTML elementa.

Padome

Lūdzu, ņemiet vērā, ka mēs esam pārveidojuši cenu rekvizītus virknē, izmantojot tostring metodi ("C"), kas parāda skaitliskās vērtības kā valūta atbilstoši kultūras iestatījumiem, kas darbojas jūsu serverī. Piemēram, ja serveris ir konfigurēts kā EN-US, tad (1002.3) .Tostring ("C") atgriezīs $ 1,002.30, bet, ja serveris ir konfigurēts kā EN-GB, tā pati metode atgriezīsies £ 1,002.30. Varat mainīt savu servera kultūras iestatījumu, pievienojot mezglam Web.config fails nākamajā sadaļā: .

Konfigurējiet noklusēto maršrutu

Tagad mums ir pietiekami daudz, lai pastāstītu MVC platformai, ka pieprasījumi ievadot vietnes saknes (http: // mysite /), jums ir nepieciešams parādīt ProductController klases saraksta darbības metodi. Lai to izdarītu, mēs rediģējam operatoru Reģistrēto lietotņu metodē App_start / RouteConfig.cs failā, kā parādīts 7-9 sarakstā.

Listing 7-9: Pievienot ciparu noklusējumu
izmantojot sistēmu; izmantojot system.Collections.Genic; Izmantojot system.linq; izmantojot System.Web; Izmantojot system.Web.mvc; Izmantojot system.web.ruting; Namespace sportsstore.webui (rutecollection maršruti.Incollection (maršruti) (maršruti. Noklusējums: jauns (kontrolieris \u003d "Prece", darbība \u003d "saraksts", ID \u003d urlparameter.optional));)))

Mainiet mājās uz produkta un indeksa sarakstā, kā parādīts sarakstā. Mēs aprakstām iespēju maršrutēšanas ASP.NET detalizēti 13. nodaļā. Pašlaik ir pietiekami zināt, ka šīs izmaiņas nosūtīs pieprasījumus noklusējuma URL darbības metodē, ko esam identificējuši.

Padome

Lūdzu, ņemiet vērā, ka sarakstā 7-9 Mēs instalējām ierīces kontroliera vērtību, nevis ProducTontroller, kas ir klases nosaukums. Tā ir daļa no ASP.NET MVC nosaukuma shēmas, kurā kontrolieru klases nosaukumi vienmēr beidzas ar kontrolieri, un piekļūstot klasei, šī nosaukuma daļa nokrīt.

Palaidiet lietojumprogrammu

Visi galvenie komponenti ir gatavi. Mums ir kontrolieris ar darbības metodi, kas tiek saukta, pieprasot noklusējuma URL. Šī darbības metode balstās uz mūsu repozitorijas interfeisa simulēto ieviešanu, kas ģenerē vienkāršus testa datus. Testa dati tiek nosūtīti uz viedokli, ka mēs esam piesaistīti ar darbības metodi, un tas rada vienkāršu sarakstu ar informāciju par katru produktu. Ja palaižat programmu, jūs redzēsiet 7-6 attēlā redzamo rezultātu.

7-6. Attēls: Mēs apskatīt pamata funkcionalitāti pieteikuma

Tas ir tipisks attīstības veidne ASP.NET MVC platformai. Mēs piešķiram diezgan daudz laika uz augšu, bet tad attīstība pamata funkcionalitātes pieteikumu, ir ļoti ātri.

Nu, tāpēc es esmu jauns pasaulē MVC, bet šķiet, ka tas ir ļoti labs veids, kā gūt panākumus, un es cenšos darīt to darbu šeit.

Problēma ir šāda: es nevaru iegūt datus no manas tabulas manā SQL-datu bāzē par vienkāršu nolaižamo veidlapu manā reģistrācijas lapā.

Man vienkārši nav idejas, kur ievietot materiālu, kurā tabulas atvēršanas kodu izvēlieties Identifikatorus, kur ievietot atbildi.Write un kā nosūtīt to uz skatu?

Mans modelis ir šāds:

Publiskais virknes nosaukums (nokļūt; komplekts;) publisks int user_id (iegūt; komplekts;))

Public ActionResult Listuser () (atgriešanās skats ();)

Un mans viedoklis ir:

@Model community.models.Users.

Man ir googled 2 dienas un noskatījos dažus videoklipus YouTube, bet tas ir bezjēdzīgi, es nevaru to atrast. Lūdzu kāds ar zināšanām šeit? Un lūdzu, norādiet mani ar labām mācību grāmatām un / vai forumiem, uz kurām es varu atrast vairāk jautājumu, kas man ir

Vēl nav laimīgs šajā projektā.

Es izveidoju veidlapu šajā veidlapā, es gribu dB-cilpu (ieņemamus). Taču pašreizējais modelis nav ieķerams. Es esmu gandrīz iestrēdzis, es izskatījos ķekars mācību grāmatas, un viņi visi vienkārši uzskaita vienu savienojumu, un kas notiks, ja man vajag divus modeļus?

Šeit ir mans kontrolieris, es sapratu, ka jums vajadzētu pārsūtīt sarakstu uz skatu, vai ne?

Public ActionResult reģistrācija () (atgriešanās skats (db.users.tolists ()););

Kā es varu saņemt šo sarakstu savā prezentācijā bez modeļa ieķerams?

@neoistheone, jūsu piemērs man nepalīdzēja, mana datu bāze atveras kā šis:

Privāts DataBasecontext DB \u003d jauns datu bāzeContext ();

un es nezinu, kā to izdarīt, bet tas atver savienojumu. Es mēģināju tik daudz stundu, vienkārši stulba, ne ilgu laiku nemēģināju!

Es izmantoju ASP-Classic FYI programmēšanu, un tas ir mans pirmais nopietns mēģinājums atjaunināt savas zināšanas par modernās valodas un OOP programmēšanu.

6 atbildes

Pievienot izvēles sarakstu savam modelim:

Public SelectList DropdownList (Get; SET;)

izveidojiet šo kolekciju klasi:

Publiskās klases mylistable (publiskā virkne taustiņš (iegūt;) publiskais virknes displejs (nokļūt; komplekts;))

un pēc tam savā kontrolierī, lejupielādējiet datus no MylistTable klases no datu bāzes:

VAR saraksts \u003d jauns saraksts (); Izmantojot (SQLConnection C \u003d jauna SQLConnection (CCST) (SQLCOMMAND CMD \u003d New SQLCommand ("Select Keyfield, Displayfield no tabulas", C)) (izmantojot (SQLDATAREADER RDR \u003d CMD.EXECUTEREADER ()) (RDR.READ ()) ) (Laist.Add (jauns mylistable (taustiņš \u003d rdr.getstring (0), displejs \u003d rdr.getstring (1)));))) var modelis \u003d jauni lietotāji (); Modelis.dropdownlist \u003d jauns SelectList (saraksts, "taustiņš", "displejs");

un tad, visbeidzot, jums ir nepieciešams nosūtīt savu modeli uz prezentāciju:

Atgriešanās skatījums (modelis);

Tagad razor jūs varat parādīt to:

@ Html.dropdownlistfor (m \u003d\u003e model.dropdownlist);

Protams, jūs varat zvanīt šīs lietas ar labākajiem nosaukumiem, bet jūs saņemsiet šo ideju.

Ir jau lielas atbildes, bet šeit ir vēl viena pieeja.

Jūs izmantosiet lietotāju kā modeli, ListusServiewModel kā pārstāvniecības modeli un Usercontroller kā kontrolieri. Darba skats modelis ir nodot visu nepieciešamo informāciju, lai parādītu lapā no kontroliera, nepievienojot nevēlamas īpašības modeļa klasei. Lietotāja lietu sarakstā no datubāzes nolaižamajā sarakstā.

Publiskās klases lietotājs // ar to, kā izmantot vienskaitli, nosaucot klasi (publisko virknes nosaukumu) publisko int user_id (iegūt; komplekts;))

Skats modelis

Publiskā klase ListusSviewModel (publiskais saraksts Lietotāji (nokļūt; komplekts;))

kontrolieris

Publiskā klase USERCONTROLLER: kontrolieris (Private DataBasecontext DB \u003d jauns DataBASECONTEXT (); Public ActionResult Linuser () (VAR LIETOTĀJI \u003d DB.USERS.Tolist (); Var ViewModel \u003d New ListusViewModel (lietotāji \u003d lietotāji); Atgriešanās skats (ViewModel);););); )

Tagad lietojiet ListusServieModel lietotāja vietā jūsu prezentācijā kā modeli.

@Model community.models.ristuserviewmodel

un nometot

@ Html.dropdownlistfor (m \u003d\u003e M.Users, jauns Selectlist (Model.Us.Us.Users, "user_id", "Vārds"), "")

Paskaidrojums:

Jūs izveidojat nolaižamo sarakstu lietotājiem ar model.USERS kā saraksta saraksta saraksta avotu. "User_id" kā izvēlētā lietotāja un "Vārds" vērtība kā displeja zīme. Pēdējais arguments (es ievietoju tukšu virkni "), ir noklusējuma vērtība, ko nolaižams tiks parādīts pirms atlases.

Es ceru, ka tas palīdzēs jums vai kādam citam.

Pamēģini,

Publiskais virknes coutryid (nokļūt; komplekts;) publiskais saraksts Valsts saraksts (iegūt;);)

Kontroliera metode, kas aizpilda sarakstu

Publiskais saraksts. GetCountrylist () (lietošana (qrmg_vendorportaldatacontext _context \u003d jauns qrmg_vendorportaldatacontext ()) (atgriešanās (no c in _context.Countries kur c.Isdelected \u003d\u003d False Select C) .Tolists ();)))

Izvēlnes saraksts

@ Html.dropdownlistfor (m \u003d\u003e m.coutryid, jauns selectlist (model.countrylist, "coutryid", "vērtība"))

Šī ir mana tabula datu bāzē

Paskaties uz manu darbības kontrolieri

// Get: Burti Public ActionResult Index () (Viewbag.letterstatusservice.Getallletterstatus (), "ID", (CultureHelper.getCurrentCulture () \u003d\u003d "AR")? "Namearabic": "Vārds", pieprasījums .QueryString ["Letterstatus pieprasījums "]); Atgriešanās skats ();)

un prezentācijā

@ Html.dropdownlist ("Letterstatus")

ko izmanto manis dizainers

Jauns izvēles saraksts (saraksts) Mylistfromdatabase, stīgu īpašumsNameofvalueinhtml, string īpašumsNameofdesplaynhtml, stīgu selekmentegvalue);

Šī rinda prasa.QueryString ["LetterStatus"], jo es sūtu atlasītos objektus querysrting

un, pamatojoties uz pašreizējo kontūru, es izvēlējos, kurā kolonnā parādās

un rezultāts

bet es domāju, ka labākais veids, kā to izdarīt, ir: - Iegūstiet vai izveidojiet vienumus, pēc tam atkārtojiet tos mest, lai manuāli radītu izvēles tagu. Es aprakstīju šo pieeju labi

11/25/06 12.7K

Ieviešana

ASP.NET ir viens no komponentiem .NET Framework. Mēs īsi uzskaitīsim šīs tehnoloģijas galvenās iezīmes.

* Kopienas izpildvaras vide CLR
* Klases bibliotēka.net Framework
* Valodas .NET (c #, vb.net, J # un citi)
* Ado.net
* Asp.net
* Web pakalpojums
* Intermediate MSIL valoda (Microsoft starpposma valoda). Tas ir montētājs izpildlaika vides CLR.

Ado.net ir klasēm, kas paredzētas, lai piekļūtu Microsoft SQL Server datu bāzēm OLEDB datu avotiem un XML failiem.

Dažādas jūsu projekta daļas var rakstīt dažādās valodās, to sauc par sadarbspēju. Mēs centīsimies uzrakstīt projektu, kurā viena no lapām būs Visual Basic, un otrs uz C #.

Komplektā tiek apkopotas un interpretētas valodas. Programmas sastādīšanas procesā, kas rakstīta apkopotā valodā, tiek izpildīts fails (Windows - EXE). Tas tiek veikts ātri, bet to nevar izpildīt citā platformā. Mašīna, uz kuras tā tiek izpildīta, jābūt līdzīgai konfigurācijai. Piemēram, ja programma izmanto DLL, tad šī bibliotēka ir jāinstalē mērķa mašīnā. Interpretējamas programmas tiek apkopotas izpildes laikā, tāpēc viņi strādā lēnāk, bet nav atkarīgi no konkrētās mašīnas. V.NET Framework piemēro divpakāpju apkopošanu, tas ir, pirmais posms ir kompilācija MSIL, un otrais ir kompilatora "Just-IN-TIMY" kompilatora apkopojums izpildes laikā. JIT kompilators optimizē mašīnas kodu, kurā tas tiek izpildīts. Asp.net, lapa ir apkopota MSIL, kad pirmo reizi apstrādāt klientu uz lapu. Kopā ar to klasēm, ko tā izmanto, tiek apkopoti. Ja jūs izmantojat Visual Studio 2005, jūs nevarat sagaidīt pirmo pieprasījumu, un piespiedu kārtā apkopot visas jūsu projekta lapas. Tas ļaus jums noteikt sintaktiskās un citas kļūdas.

MSIL ir montētājs, kas nav atkarīgs no automašīnas. To var veikt jebkurā mašīnā, kurā ir instalēta CLR. Mono projekts cenšas nodot CLR uz citām platformām, ļaujot jums mijiedarboties serveriem, kas darbojas dažādās platformās.

Jūs varat iepazīties ar projektu vietnē http://mono-project.com

Lapa http://go-mono.com/Archive/xsp-0.10.html ir XSP - ASP.NET serveris, kas var kalpot kā Apache servera paplašinājums - galvenais serveris * Nix sistēmas.

Kā darbojas ASP.NET

Kad mēs lasām.net, atbilstošajās direktorijās C: WindowsMicrosoft.netFramework vietās arī failu. Tā ir ISAPI paplašināšanās, un tas ir paredzēts, lai saņemtu pieprasījumus, kas adresēti ASP.NET lietojumprogrammām (* .aspx * .asmx utt.), Kā arī izveidojot darbplūsmas aspnet_wp.exe, degvielas pieprasījumus. Interneta serveris - IIS vai iebūvēta webmatrix vai iebūvēta Visual Studio Cassini - Izmantojiet šo paplašinājumu, ja viņiem ir nepieciešams apstrādāt piekļuvi ASPX paplašināšanas lapām.

Šī moduļu nodošana (analizē) ASPX lapu saturu kopā ar atdalīto kodu failu un ģenerē klasi lapas valodā ar objektu lapu. ASPX lapa atšķiras no parastās HTML lapas klātbūtnes servera kontroles, kas aprakstītas ar īpašiem tagiem. Lai izprastu darbību ASP.NET, ir svarīgi atzīmēt, ka katrs tags vadības elementa atbilst tās loceklim lapas klasē. Piemēram,

pārveidots B.

@__CTRL \u003d jauns globāls :: system.web.ui.webcontrols.label ();

Objekta galvenais uzdevums ir HTML koda gabals izejas plūsmā. Šī klase ir apkopota bibliotēkā.dll, kas ir ielādēts tīmekļa servera procesā. Turpmākie pieprasījumi uz lapu arī apstrādā DLL, ja lapas avota kods nemainās. Visi šie faili var atrast pašreizējās versijas "pagaidu asp.net failu" direktorijā .NET. Ja mēs strādājam Visual Studio 2005 vai VWD attīstības vidē, jūsu apakšdirektorija ir izveidota katram projektam.

Lapu veidi un projektu mapes

Jūs varat pievienot jaunus failus, izmantojot jauno failu dialoglodziņā. Ja noņemat izvēles rūtiņu "Place Code atsevišķā failā", Visual Studio radīs vienu failu, kurā būs lapa un kods, lai to apstrādātu (WebMatrix stilā).

Visi faili tiek ievietoti projekta direktorijā. Savukārt visi faili, kas tiks ievietoti projekta direktorijā, kļūs par daļu no tā. Tīmekļa vietnēm nav īpaša file.csproj, kas būtu uzskaitītas tās sastāvdaļas, kā tas bija iepriekšējās vizuālās studijas versijās. Risinājums struktūra (šķīdums) ir aprakstīta teksta failā.sln. Risinājums var ietvert vairākas tīmekļa vietnes un bibliotēkas.

ASP.NET 2.0 ir īpašs projektu ieraksti dažādiem failiem. Piemēram, publiski pieejamas klases, teksta faili un daži citi tiek saglabāti App_code mapē (datu kopa, klases diagramma). Faili ar paplašinājumiem. CS Or.VB, kas ir jautri, tiek automātiski apkopoti, ja tiek pieprasīta jebkura projekta lapa. App_Data satur datu avotus, ko izmanto projektā - piekļuves un Microsoft SQL datu bāzēm, XML failiem. Šo direktoriju nevar piekļūt no ārpuses, bet tikai no paša pieteikuma. Tēmas mapes veikali projektu tēmas (lekciju 13). Tēmu izmantošana ļauj pielāgot vietnes vienotu izskatu un centralizēti vadīt tos. App_globalresources satur resursus, piemēram, rindu tabulas, kuras var izveidot dažādās valodās. Resursu valoda tiek automātiski izvēlēta atkarībā no lietotāju pārlūkprogrammas iestatījumiem. App_webreferences mapē ir saites uz lietotu tīmekļa pakalpojumiem.

Jūs varat izveidot savu projekta ierakstu, piemēram, attēlu uzglabāšanai.

Projekts 2 valodās

Tīmekļa vietnes projekts sastāv no ASPX un klasēm, kas tiek izmantotas lapās (un, protams, dažādiem resursiem). Faili ar klasēm, uz kurām jūs varat sazināties no dažādām lapām, tiek ievietotas īpašā app_code mapē. Apkopojot, tie tiek ievietoti vienā montāžā - bibliotēkā.dll pārnēsājamā izpildāmā formātā. Tas nav svarīgi, kādā valodā klase ir rakstīta, ja tā ir valoda .NET.

Projektā var izmantot arī trešo pušu ražotāju sagatavoto būvniecību. Tie ir ievietoti bin mapē. Tajā pašā laikā tie ir jāieved projektā.

<%@ Import Namespace="MyCustomNamespace" %>

Izveidojiet jaunu projektu. Pievienojiet to failu, izvēloties klases faila un vizuālās pamatvalodas veidu. Pati vide piedāvās to ievietot mapē koda. Zvanīsim par to CustomClass. Viņam būs ļoti vienkāršs kods. Tikai viena funkcija, kas pievieno vārdu Hello uz nosaukumu, kas nosūtīts kā parametrs.

Imports Microsoft.VisualBasic Publiskā klase CustomClass publiskā funkcija GetMessage (BYVAL nosaukums kā virkne) kā virknes atgriešanās "Sveiki" un vārda beigu funkcijas beigu klase

Pievienot projektam Codefolder_cs.aspx lapā. Šī lapa ir uzrakstīta uz C #, bet tas rada klasi uzrakstīts VB.NET.

<%@ page language="C#" %> Asp.net inline lapas.

Laipni lūdzam Asp.net 2.0!

IEVADIET SAVU VĀRDU:

Lapā ir definēts forma, kas atgādina Windows lietojumprogrammas formu. Tai ir poga, uzklikšķinot uz to, kas apstrādā pogas1_click funkciju. Tas rada klasi, un tās getMessage funkciju sauc par parametru, kas ņemts no rediģēšanas elementa. Atgriešanās vērtība tiek ierakstīta LABEL1 elementā. Vienkāršākā versijā tas izskatās šādi:

Label1.Text \u003d "HELLO" + TEXTBOX1.Text;

Klase var tikt uzrakstīta C # un izmantota no vizuālās pamata lapas.

izmantojot sistēmu; Publiskās klases customclass2 (virknes ievade) (atgriešanās "Sveiki no C #" + ieejas;) CODEFOLDER_VB.ASPX Lapas kods:

Tomēr ir iespējams izvietot lietotnes ostu direktorijā tajā pašā valodā. Ja ir faili dažādās valodās, projekts netiks apkopots. Lai izmantotu divas valodas, jums ir jāizveido subdirectory, pievienot to web.config failu un ievietot failus tajā citā valodā.

Reģistrācija WEB.Config failā:

... ...

Direktīva

Katrā ASPX lapā direktīvas parasti ir norādītas, izmantojot kurus jūs varat kontrolēt lapas uzvedību. Jūs varat apsvērt viņu valodu, ar kuru jūs sazināties ar kompilatoru, norādot uz to, kā apstrādāt šo lapu. Direktīvas parasti ievieto faila sākumā. Mēs jau esam tikušies ar direktīvas lapu pirmajā lekcijā.

Sintegris reklāmu direktīvas, piemēram:

<%@ %>

Jūs varat deklarēt vairākas direktīvas vienlaicīgi:

<%@ %>

Asp.net 2.0 ir 11 direktīvas.
Direktīva atribūtu apraksts
@Assembly vārds.
SRC importē uz lapu vai montāžas kontroli ar norādīto nosaukumu
@Control ir tāds pats kā lapa tiek izmantota, lai norādītu īpašības, veidojot savu lietotāja kontroli.
@Implements interfeiss norāda, ka šīs lapas klase īsteno šo saskarni
@Import namespace imports nosaukumu
@Master ir tāds pats kā lapa attiecas uz dizaina veidnes lapām (galvenā lapa). Jauns ASP.NET 2.0
@MasterType dypename.
VirtualPath dod stingri ierakstītu saiti uz klasi, kas atrodas projektēšanas veidnē. Ļauj piekļūt šīs klases īpašībām.
@Outputcache ilgums
Atrašanās vieta
Varybycustom
Varybyheader.
Varybyparam.
VarybyControl pārvalda kešatmiņas lapu vai kontroli. Lasīt vairāk aprakstīts lekcijās 15.
@Page Skatīt zemāk atribūtus, kas saistīti ar šo lapu. Izmanto tikai failos ar ASPX paplašinājumu
@Previouspagetype dypename.
VirtualPath lapa, ar kuru tika nosūtīts lietotāja ievadītie dati. Jauns ASP.NET 2.0. Iepriekš lapas nosūtīja ziņu tikai sev.
@Reference lapa
Kontroles lapa vai kontrole, kas ir jāsagatavo kopā ar to
@Register montāža
NameSpace.
Sn
Tagname.
TagPrefix rada pseidonīmi nosaukumvietām un lietotāju kontrolei

Līdz šim apsvērt detalizēti 2 no tiem - Pagas un importa.

Page direktīva

Lapas direktīva ļauj iestatīt apkopošanas laikā izmantotās lapas īpašības. Šī direktīva tiek izmantota biežāk nekā pārējie, tāpēc tas ir jāapsver sīkāk.

Svarīgākie direktīvas atribūti ir uzskaitīti tabulā:

Autoeventwireup. Automātiskā lapu notikumu apstrāde
Buferis. Pārvalda lapas buferizācijas. Pēc noklusējuma, buferēts
Klasificētais nosaukums. Ļauj piešķirt šīs lapas radīto klases nosaukumu.
Codefils. Faila nosaukums ar atdalītu kodu šai lapai
Kultūra. Iestata reģionālo parametru kopumu, t.i. Valoda, Valūtas formāts, datumi, numuri
Atkļūdošana. Ja TRUE, atkļūdošanas informācija tiek parādīta lapā.
Izsekot Trace informācijas tulkošana
EnableViewstate. Lapas stāvokļa saglabāšana. Pēc noklusējuma tas tiek saglabāts
Enabletheming. Ļauj iespējot vai atspējot atbalstu dizainam. Noklusējums ir ieslēgts
Mantojums. Klase, no kura šīs lapas klase atdalītā koda tehnoloģija ir iedzimta.
Isasync. Parāda, vai lapa tiek apstrādāta asinhroni.
Valodu. Iegultā kodā izmantotā valoda
WarningLevel. Lielākais pieļaujamais kompilatora brīdinājumu līmenis
Kompilatori. Pabeigšanas iespējas

Klases bibliotēkas nosaukumvieta

FCL klases bibliotēka satur tūkstošiem nodarbību. Lai atvieglotu lietošanu, tie ir apvienoti namespace. Lai piekļūtu NameSpace deklarētajām klasēm, nenorādot pilnu ceļu, tas ir jāieved projektā. Ja vēlaties strādāt ar XML formāta failiem, jums ir nepieciešams importēt System.XML Namespace. Atdalītās kodu lapās C #, kā vienmēr, tiek izmantota direktīva.

izmantojot sistēmu. Xml;

Uz ASPX lapu - importa direktīva

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

Katram vārdam, ir nepieciešama atsevišķa importa direktīva.

Visual Studio.net un VWD pēc noklusējuma ir iekļautas C # lapā visbiežāk izmantotās Namespaces. Aspx Page importē šos nosaukumvietas nav nepieciešama.

izmantojot sistēmu; Izmantojot System.Data; Izmantojot system.Configuration; Izmantojot system.Collection; izmantojot System.Web; Izmantojot System.Web.Security; Izmantojot system.web.ui; Izmantojot system.web.ui.webcontrols; izmantojot system.web.ui.webcontrols.webparts; Izmantojot system.web.ui.htmlcontrols;

Piemēram, System.Web.ui Namespace ir klases lapa, bez ASP.NET lapā, System.Web - HTTPREQUEST un HTTPRESPSE.

Klases skatītāja programma

Kā uzzināt, kādas klases ir pieejamas klases bibliotēkā.net? To izstrādāja pēc Objekta pārlūkprogrammas (Visual Studio 2005) un klases pārlūkprogrammas WebMatrix. Lai atvērtu objektu pārlūku Visual Studio 2005 vai VWD Express, izvēlieties skatu-\u003e objekta pārlūka izvēlnes vienumu. Ja izmantojat WebMatrix, klases pārlūks atrodas tajā pašā Windows izvēlnes mapē kā WebMatrix - visas programmas -\u003e ASP.NET WebMatrix. AS ASP.NET klases pārlūkprogrammas formātā iekļauts SDK ietvaros.

Visi pieejamie nosaukumvietas tiek parādīti kā koku struktūras mezgli. Mēs esam ieinteresēti System.Web. Atveriet šo mezglu. Tur bija arī citas namestas iekšpusē. Atvērt system.web.ui. Ir liels skaits klases, saskarnes, delegātu, uzskaites. Jūs varat atrast tos ikonas. Piemēram, delegāta ikona ir līdzīga čemodānai.

- klase

- interfeiss

- pasākums

- saraksts

- metode

Izvēlieties lapu. Labajā logā parādīsies tās metožu, lauku un notikumu saraksts. Ja izvēlaties metodi, tā apraksts parādīsies trešajā logā. Iekšā klasē ir vēl divas mapes - bāzes klases un pēcnācēju klases. Visi no tiem var apskatīt arī. Objekta pārlūks parāda pašreizējā projekta klases. Ja klases tiek komentētas ar XML dokumentācijas ģenerēšanas tagiem, tad šī informācija ir redzama arī, piemēram, kopsavilkums, parametri, vērtības, atgriešanās.

Izpētīt Ispostback īpašumu, jūs varat uzzināt, ka tai ir būla vērtība, un tā ir paredzēta tikai lasīšanai.

Pārbaudiet atbilstības standartus

Ir dažādi HTML un XHTML standarti. Vēlāk standartiem nozīmē stingrākas prasības, piemēram, XHTML 1.1 neļauj
un citi vienkārši tagi bez aizvēršanas slīpsvītra
. Tajā pašā laikā vecie standarti neatbalsta jaunus tagus.

HTTP Query Header norāda dokumenta standartu, Visual Studio 2005 visās lapās norāda uz šādu standartu:

Šis standarts prasa XMLN atribūtu tagā - saites uz vietni, kas apraksta standartu.

Daudzas lapas, kas veiktas iepriekšējām ASP.NET versijām, nav šādas atribūta. HTML avota rediģēšanas investīciju panelī ir arī nolaižams saraksts, kurā var izvēlēties pārlūkprogrammas standartu vai versiju, kurai šī lapa ir paredzēta. Lapa tiek automātiski pārbaudīta, lai atbilstu šim standartam.
Īpašības lapa

Lapa ir pamats visu tīmekļa lietojumprogrammā.

System.Web.ui.Page klase iekapsulē funkcionalitāti, kas nepieciešama, lai izveidotu un apstrādātu ASP.NET lapas.

Katrs ASP.NET lapa ir klases objekts, ko automātiski ģenerē ASP.NET Core. Klase ir mantota no klases, kas saistītas ar lapu, ja mēs izmantojam atdalītu kodu vai tieši mantojies no System.Web.ui.Page Ja C # kods ir iestrādāts lapā. Trešdiena arī izveido noklusējuma dizaineru.

Lai pārliecinātos, ka mēs varam izveidot Pagetype.aspx lapu:

<%@ Page Language="C#" %> Lapas veids

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

Šeit ir rezultāts:


Šīs lapas system.web.ui.page pamata veids

Tāda pati lapa, kas izveidota ar koda atdalīšanas tehnoloģiju.

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

raksta rezultātu

Šīs lapas veids asp.pagetype_aspx
Pamata veida šīs lapas pagatavošana

Fakts, ka Pagetype ir system.Web.ui.Page mantinieks, ir rakstīts failā nošķirtā koda:

publiskā daļēja klase Pagetype: system.web.ui.page

Uz pašreizējo lapu objektu jūs varat sazināties kā mainīga lapa. Lapa ir šīs lapas vadības elementu konteiners, tādējādi tajā ir kontroles kolekcija. Ja TEG Atribūts ir Runat \u003d "servera" atribūts, tad lapā ir galvenes lauks, caur kuru jūs varat kontrolēt nosaukumu lapu. Piemēram, mainiet lapas nosaukumu pārlūkprogrammas galvenē, piešķiriet stilu kaskādes tabulas failu.

Hello asp.net.

Uzziniet, kā programmēt ASP.NET

Šajā piemērā mēs mainījām galvenes tekstu. Palaidiet šo lapu. Iegūtajā HTML kodā tagā Nav vairs "Untitled lapa", bet "jauns nosaukums", kas tika iestatīts caur lapu .Header.title. Tag tika izveidots <p>Kas tika atspoguļots šādā veidā:</p> <p><style type="text/css"> p { color:Blue;background-color:Beige; } </style></p> <p>CSS ārējā lapa tika importēta no faila.</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.

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

Тег