Ցուցադրում է ապրանքների ցուցակը: Պատասխանատվությունը անդառնալի է

Մենք կարողացանք լիարժեք ստեղծել դոմենի մոդել եւ պահեստ, առանց նույնիսկ ազդելու UI նախագծի վրա: Բայց այնպես, որ դուք չեք ձանձրանում, մենք կփոխենք դասընթացը եւ կսկսենք օգտագործել MVC շրջանակը ամբողջ ուժով: Անհրաժեշտության դեպքում մենք կավելացնենք մոդելի եւ պահեստավորման նոր հնարավորություններ:

Այս բաժնում մենք կստեղծենք վերահսկիչ եւ գործողությունների մեթոդ, որը տեղեկատվություն կցուցաբերի պահեստում ապրանքների մասին: Այս պահին մենք ունենք միայն այն մոդելավորված պահեստավորման մեջ, բայց մենք կլուծենք այս հարցը ավելի ուշ: Մենք կանցկացնենք նաեւ նախնական պարամետրերը: Ուղղորդման կազմաձեւերԱյսպիսով, այդ MVC- ն հայտնի է, թե ինչպես ցուցադրել դիմումի պահանջները վերահսկիչին, որը մենք պատրաստվում ենք ստեղծել:

Ավելացնել վերահսկիչ

Right-clatch Կարգավորիչների թղթապանակը SportsStore.Webui նախագծում եւ ընտրեք հավելվածի ընտրացանկում վերահսկիչ: Հանձնարարեք վերահսկիչի անունը ProductController եւ համոզվեք, որ կաղապարի տարբերակը պարունակում է դատարկ վերահսկիչ: Երբ Visual Studio- ն է բացում ֆայլ խմբագրելու համար, կարող եք ջնջել գործողությունների լռելյայն մեթոդը, որն ինքնաբերաբար ավելացվել է, եւ ձեր ֆայլը նման կլինի 7-6 ցուցակագրում:

7-6 ցուցակագրում. ProductController- ի առաջնային սահմանում
օգտագործելով համակարգը; Օգտագործելով համակարգը: Օգտագործելով համակարգը .l.linq; Օգտագործելով համակարգը .Web; Օգտագործելով System.web.mvc; Օգտագործելով storsstore.domain.abstract; Օգտագործելով սպորտային. տիրապետություն. Namespace sportsstore.webui.controllers (Հանրային դասի արտադրանք, վերահսկիչ (մասնավոր iProductrepositor repositroller (iproductrepository արտադրող) (սա.

Ex ուցանիշի գործողությունների եղանակը հեռացնելը, մենք ավելացնում ենք դիզայներ, որն ընդունում է IProductrepository պարամետրը: Դա թույլ կտա իններիջը իրականացնել ապրանքների պահեստի կախվածությունը, երբ այն կստեղծի վերահսկիչ դասի օրինակ: Մենք նաեւ ներմուծեցինք սպորտային նիշեր, որպեսզի կարողանանք մուտք գործել պահեստային եւ մոդելների դասեր, առանց մատնանշելու իրենց անունները:

7-7 ցուցակագրում. Ավելացնել գործողությունների եղանակ
օգտագործելով համակարգը; Օգտագործելով համակարգը: Օգտագործելով համակարգը .l.linq; Օգտագործելով համակարգը .Web; Օգտագործելով System.web.mvc; Օգտագործելով storsstore.domain.abstract; Օգտագործելով սպորտային. տիրապետություն. Namespace sportsstore.webui.controllers (հանրային դասի արտադրանք, վերահսկիչ (հանրային արտադրանք կառավարիչ; հանրային արտադրանք, iProductrepository;) Հանրային դիտումների ցուցակը () (վերադարձի դիտում (պահեստարան);) } }

Դիտարանի մեթոդին նման կոչը (առանց անվանման անունը նշելու) պատմում է պլատֆորմը `պատկերացնելու լռելյայն ներկայացուցչությունը գործողությունների այս մեթոդի համար: List ուցակի ցուցակի ցուցակի ցուցակի ցուցակի ցուցակը դիտելու եղանակով արտադրանքի առարկաները մենք տրամադրում ենք պլատֆորմի տվյալները `լրացնելու համար մոդելի օբյեկտը խիստ տպված տեսքով:

Ավելացնել ներկայացուցչություն

Այժմ մենք պետք է լռելյայն դիտում ավելացնենք ցուցակի գործողությունների մեթոդի համար: Right-Կտտացրեք ցուցակի ձեւը կոդերի խմբագրում եւ ընտրեք Ավելացնել - դիտեք համատեքստի ընտրացանկում: Հանձնարարեք ցուցակի անվանումը եւ ստուգեք այն տարբերակը, որը ստեղծում է խստորեն մուտքագրված տեսակետներ, ինչպես ցույց է տրված Նկար 7-5-ում:

Նկար 7-5: Ավելացնել ցուցակի ներկայացուցչություն

Մոդելի դասի դաշտում մուտքագրեք iEnumerabil , Դուք պետք է տպել այս անունը. Այն հասանելի չի լինի բացվող ցուցակից, որը չի ներառում տիրույթի օբյեկտների տեղափոխումը:

Ապագայում մենք կօգտագործենք ածելիի ստանդարտ դասավորությունը, որն ընդգրկված է հիմնական նախագծի ձեւանմուշում, որպեսզի մեր տեսակետները համազգեստ տեսք ունենան: Ստուգեք օգտագործումը դասավորության տարբերակի վանդակը, բայց թողեք տեքստի տուփը դատարկ, ինչպես ցույց է տրված նկարում: Տեսադաշտ ստեղծելու համար կտտացրեք Ավելացնել կոճակը:

Մենք պատկերացնում ենք ներկայացման տվյալները

Իմանալով, որ ներկայացման մեջ գտնվող մոդելը iEnumerable է Մենք կարող ենք ստեղծել ցուցակ, օգտագործելով Foodeach ցիկլը ածելիում, ինչպես ցույց է տրված 7-8 ցուցակագրում:

7-8 ցուցակագրում. List.CSHTML ներկայացուցչություն
@Model ienumabil: @ (Viewbag.title \u003d "(! Lang: Ապրանքներ)"; } !} @Forech (var p մոդելով) (

@ P.NAME.

@ p.description.

@ p.price.tostring ("C")

}

Մենք նաեւ փոխեցինք էջի վերնագիրը: Խնդրում ենք նկատի ունենալ, որ մեզ հարկավոր չէ օգտագործել ածելի տեքստ կամ @ իրեր. Դիտեք տվյալները, քանի որ մարմնի կոդի յուրաքանչյուր տող կամ ածելիի հրահանգը կամ ածելիի տարրը սկսվում է:

Խորհուրդ

Խնդրում ենք նկատի ունենալ, որ մենք տողում փոխարկել ենք գների հատկությունները `օգտագործելով tostring մեթոդը (« C »), որը ցուցադրում է թվային արժեքներ, որպես արժույթ, ըստ ձեր սերվերի մշակույթի պարամետրերի: Օրինակ, եթե սերվերը կազմաձեւված է որպես en-us, ապա (1002.3): Կարող եք փոխել մշակույթի կարգավորումը ձեր սերվերի համար `ավելացնելով հանգույց Web.config ֆայլ հաջորդ բաժինը. .

Կազմաձեւեք լռելյայն ուղիները

Այժմ մենք բավականաչափ ունենք MVC պլատֆորմի մասին, որ կայքի արմատը մուտքագրող հարցումները (http: // Mysite /), դուք պետք է ցուցադրեք ProductColler դասի ցուցակի գործողությունների եղանակը: Դա անելու համար մենք խմբագրում ենք օպերատորին գրանցամատյանների մեթոդով App_Start / Routeconfig.cs ֆայլում, ինչպես ցույց է տրված 7-9 ցուցակագրում:

7-9 ցուցակագրում. Ավելացնել թվանշանային լռելյայն
օգտագործելով համակարգը; Օգտագործելով համակարգը: Օգտագործելով համակարգը .L.linq; Օգտագործելով համակարգը .Web; Օգտագործելով System.web.mvc; Օգտագործելով համակարգը .web.ruting; Namespace sportsstore.webui (երթուղային երթուղիներ. "Երթուղիներ) (երթուղիներ) Լռելյայն. Նոր (վերահսկիչ \u003d "արտադրանք", գործողություն \u003d "ցուցակ", ID \u003d URLPARAMETER.OPTION));)))

Փոխեք տունը արտադրանքի եւ ցուցակի ցուցակի վրա, ինչպես ցույց է տրված ցուցակի մեջ: Մենք նկարագրում ենք ASP.NET- ում մանրամասնորեն երթեւեկելու հնարավորությունը 13-րդ գլխում: Այս պահին բավական է իմանալ, որ այս փոփոխությունը հարցումներ կուղարկի լռելյայն URL- ին, որը մենք հայտնաբերել ենք:

Խորհուրդ

Խնդրում ենք նկատի ունենալ, որ 7-9 ցուցակագրում մենք տեղադրել ենք արտադրանքի վերահսկիչ արժեքը, եւ ոչ թե productController, որը դասի անունն է: Սա ASP.NET MVC անվանման սխեմայի մի մասն է, որում վերահսկիչների դասերի անունները միշտ ավարտվում են վերահսկիչի վրա, եւ դասի մուտք ունենալիս անվանման այս մասը ընկնում է:

Գործարկել դիմումը

Բոլոր հիմնական բաղադրիչները պատրաստ են: Մենք ունենք վերահսկիչ գործողության մեթոդով, որը կոչվում է լռելյայն URL պահանջելիս: Գործողության այս մեթոդը հենվում է մեր պահեստային ինտերֆեյսի մոդելավորված իրականացման վրա, որն առաջացնում է պարզ թեստային տվյալներ: Թեստային տվյալները փոխանցվում են այն տեսակետին, որը մենք կապվել ենք գործողությունների մեթոդի հետ, եւ այն ստեղծում է պարզ ցուցակ `յուրաքանչյուր ապրանքի վերաբերյալ տեղեկատվությամբ: Եթե \u200b\u200bդիմումը գործարկեք, կտեսնեք 7-6 նկարում ներկայացված արդյունքը:

Նկար 7-6: Մենք դիտում ենք դիմումի հիմնական գործառույթը

Սա բնորոշ զարգացման ձեւանմուշ է ASP.NET MVC պլատֆորմի համար: Մենք բավականին շատ ժամանակ ենք նշանակում, բայց հետո դիմումի հիմնական գործառույթի զարգացումը շատ արագ է:

Դե, այնպես որ ես նոր եմ աշխարհի MVC- ն, բայց թվում է, որ սա հաջողության հասնելու շատ լավ միջոց է, եւ ես փորձում եմ այն \u200b\u200bաշխատել այստեղ:

Խնդիրը հետեւյալն է. Ես չեմ կարող իմ SQL-տվյալների բազայում իմ սեղանից տվյալներ ստանալ իմ գրանցման էջի պարզ բացվող ձեւի մեջ:

Ես պարզապես գաղափար չունեմ, թե որտեղ պետք է դնեմ այն \u200b\u200bնյութը, որտեղ սեղան բացելու կոդը ընտրեք նույնականացուցիչներ, որտեղ պատասխանը եւ ինչպես ուղարկել այն տեսադաշտը:

Իմ մոդելը հետեւյալն է.

Հասարակական լարային անուն (Ստացեք; Սահմանել;) հանրային int user_id (ստանալ; Սահմանել;))

Հասարակական գործողությունների ցուցակագրում () (վերադարձի դիտում ();)

Եվ իմ կարծիքը հետեւյալն է.

@Model Community.models.users.

Ես 2 օր քողարկեցի եւ YouTube- ում դիտեցի մի քանի տեսանյութեր, բայց դա անօգուտ է, ես չեմ կարող գտնել: Խնդրում ենք այստեղ ինչ-որ մեկին նման գիտելիքներով: Եւ խնդրում եմ ինձ անվանեք լավ դասագրքերով եւ / կամ ֆորումներ, որոնց վրա ես կարող եմ ավելի շատ հարցեր գտնել, որոնք կարող եմ ունենալ

Դեռեւս հաջողակ չէ այս նախագծում:

Այս ձեւով ձեւ եմ ստեղծում, ուզում եմ db-loop (Ienumabil): Բայց ներկայիս մոդելը iEnumerabil չէ: Ես համարյա խրված եմ, ես նայեցի դասագրքերի մի փունջ, եւ նրանք բոլորը պարզապես թվարկում են մեկ կապ, եւ ինչ է պետք երկու մոդել:

Ահա իմ վերահսկիչը, ես հասկացա, որ դուք պետք է ցուցակը փոխանցեք տեսադաշտին, այնպես չէ:

Հասարակական գործողությունների գրանցում () (վերադարձի դիտում (db.users.tolist ());)

Ինչպես ստանալ այս ցուցակը իմ ներկայացման մեջ, առանց մոդելի IEnumerabil:

@neoistheone, ձեր օրինակը ինձ շատ չի օգնել, իմ տվյալների բազան այսպես է բացվում.

Մասնավոր տվյալների շտեմագիր DB \u003d նոր տվյալների շտեմագիր ();

Եվ ես չգիտեմ, թե ինչպես դա անել, բայց դա բացում է կապը: Ես շատ ժամեր եմ փորձել, պարզապես հիմար չէի քնել երկար ժամանակ:

Ես օգտագործում եմ ASP-Classic FYI ծրագրավորում, եւ սա իմ առաջին լուրջ փորձն է `թարմացնելու իմ գիտելիքները ժամանակակից լեզվի եւ oop ծրագրավորման վերաբերյալ:

6 պատասխան

Ընտրեք ընտրությունը ձեր մոդելին.

Հանրային ընտրության ցուցակ Dropdownlist (Ստացեք; Սահմանել;)

Կառուցեք դաս այս հավաքածուի համար.

Հասարակական կարգի mylisttable (հանրային լարային բանալին (ստացեք; հավաքեք;) հանրային լարային ցուցադրում (ստացեք; հավաքածու;))

Եվ հետո ձեր վերահսկիչում ներբեռնեք տվյալների բազայից ստացված տվյալները.

Var ցուցակը \u003d Նոր ցուցակ (); Օգտագործելով (SQLConnection C \u003d New Sqlconnection (CSSTRING) Օգտագործելով (SQLCOMMAND CMD \u003d New SQLCOMMAND ("Ընտրեք ստեղնաշարը, Displayfielffield From Table", C)) (մինչդեռ ( ) (laist.add (նոր mylisttable (ստեղն \u003d rdr.getstring (0), ցուցադրում \u003d RDR.GetString (1)))))) var model \u003d նոր օգտվողներ (); Model.Dropdownlist \u003d Նոր ընտրության ցուցակ (List ուցակ, «բանալին», «ցուցադրում»);

Եվ հետո, վերջապես, դուք պետք է ուղարկեք ձեր մոդելը շնորհանդեսին.

Վերադարձի դիտում (մոդել);

Այժմ ածելիում կարող եք ցուցադրել այն.

@ Html.dropdownlistfor (M \u003d\u003e Model.Dropdownlist);

Իհարկե, դուք կարող եք այս բաները անվանել լավագույն անուններով, բայց կստանաք այս գաղափարը:

Արդեն մեծ պատասխաններ կան, բայց ահա եւս մեկ մոտեցում:

Դուք կօգտագործեք օգտագործողին որպես մոդել, List անկի ցուցակՄոդել, որպես ներկայացուցչական մոդել եւ օգտագործող մոդել, որպես վերահսկիչ: Աշխատանքային դիտում-մոդելը պետք է փոխանցվի բոլոր անհրաժեշտ տեղեկատվությունը, որը անհրաժեշտ է վերահսկիչից էջը ցուցադրելու համար, առանց մոդելի դասի անցանկալի հատկություններ ավելացնելու: Ձեր օգտագործողի ցուցակի ցուցակի ցուցակում `ներքեւի ցուցակի տվյալների շտեմարանից:

Հանրային դասի օգտագործող // ի դեպ օգտագործել եզակի դասի (հանրային լարային անուն) հանրային Int USER_ID (ստանալ; հավաքվել;)

Դիտում-մոդել

Պետական \u200b\u200bդասի ցուցակագրվող ցուցակ (հանրային ցուցակ Օգտագործողներ (ստացեք; Սահմանել;))

վերահսկիչ

Հանրային դասի UserController: Controller (մասնավոր տվյալների բազա) DB \u003d նոր տվյալների շտեմագիր (); հանրային գործողություններ. )

Այժմ օգտագործեք ListuserViewModel- ը օգտագործողի փոխարեն ձեր ներկայացման մեջ որպես մոդել:

@Model Community.models.listServiewModel

եւ թողնելով

@ Html.dropdownlistfor (M \u003d\u003e M.users, New Selectylist (Model.Users, "User_ID", "NANE"), "»)

Բացատրություն.

Դուք ստեղծում եք բացվող ցուցակը մոդելի օգտագործողների համար, որպես ցուցակի ցուցակի ցուցակի աղբյուր: «User_ID» որպես ընտրված օգտվողի եւ «անվանման» արժեքը որպես ցուցադրման նշան: Վերջին փաստարկը (ես դատարկ լար եմ դնում ») լռելյայն արժեքն է, որը բացվողը կցուցադրվի նախքան ընտրությունը:

Հուսով եմ, որ դա կօգնի ձեզ կամ մեկ ուրիշին:

Փորձիր,

Հասարակական լարային զույգ (ստացեք; հավաքածու;) հանրային ցուցակը Երկրպագուն (ստացեք; հավաքածու;)

Controller մեթոդը, որը լրացնում է ցուցակը

Հանրային ցուցակ. Getcountrylist () (օգտագործելով (qrmg_vendorportaldacontact _context \u003d նոր qrmg_vendorportaldatacontactactactax) (վերադարձը (C- ից _context.countries)) .Tolist ();))

Բաց թողած ցուցակը

@ Html.dropdownlistfor (M \u003d\u003e M.Coutryid, New Selectylist (Model.Countrylist, "Couretry", "արժեք"))

Սա իմ սեղանն է տվյալների բազայում

Նայեք իմ ակցիայի վերահսկիչին

// Ստացեք. Նամակներ հանրային գործողությունների ցուցիչ ինդեքս () (դիտում. "ID", «ID», (Մշակույթ "ar")? "Name" «]); Վերադարձի դիտում ();)

եւ ներկայացման մեջ

@ Html.dropdownlist ("Leterstatus")

Օգտագործվում է իմ դիզայներների կողմից

Նոր ընտրության ցուցակ (ցուցակ Mylistfromdatabase, string propertynameofvaluehtml, string propertynameofdesplaynhtml, string selectitemvalue);

Այս շարքը պահանջում է .Querystring [«LeleTerstatus»], քանի որ ընտրված իրեր եմ ուղարկում QuerySTRING- ում

եւ ընթացիկ ընտրության հիման վրա ես ընտրեցի, թե որ սյունը ցուցադրվի

Եւ արդյունք

Բայց ես կարծում եմ, որ կատարելու լավագույն միջոցը. - Ստացեք կամ ստեղծեք իրեր, ապա կրկնեք դրանք `ընտրելու համար ընտրող պիտակը ձեռքով գցելու համար: Ես լավ նկարագրեցի այս մոտեցումը

11/25/06 12.7k

Ներածություն

ASP.NET- ը բաղադրիչներից մեկն է: NET Framework: Մենք համառոտ կհայտարարենք այս տեխնոլոգիայի հիմնական առանձնահատկությունները:

* Համայնքի գործադիր միջավայրի CLR
* Class Library.net Framework
* Լեզուներ. NET (C #, VB.NET, J # եւ այլն)
* Ado.net
* ASP.NET
* Վեբ ծառայություն
* Միջանկյալ MSIL լեզու (Microsoft Intermediate Language): Սա ռումբ է գործարկման միջավայրի CLR- ի համար:

Ado.net- ը դասերի մի շարք է, որոնք նախատեսված են Microsoft SQL Server տվյալների բազան մուտք գործելու OLEDB տվյալների աղբյուրներին եւ XML ֆայլերին:

Ձեր նախագծի տարբեր մասերը կարող են գրվել տարբեր լեզուներով, սա կոչվում է փոխգործունակություն: Մենք կփորձենք գրել մի նախագիծ, որտեղ էջերից մեկը կլինի տեսողական հիմնական, իսկ մյուսը, C #:

Ամբողջական լեզուները կազմվում եւ մեկնաբանվում են: Կազմված լեզվով գրված ծրագիր կազմելու գործընթացում, որը կատարվում է ֆայլ (Windows- ում `EXE): Այն իրականացվում է արագ, բայց չի կարող կատարվել մեկ այլ հարթակի վրա: Մեքենան, որի վրա կատարվածը պետք է ունենա նման կազմաձեւ: Օրինակ, եթե ծրագիրը օգտագործում է DLL, ապա այս գրադարանը պետք է տեղադրվի թիրախային մեքենայի վրա: Մեկնաբանական ծրագրերը կազմվում են կատարման պահին, այնպես որ նրանք ավելի դանդաղ են աշխատում, բայց կախված չէ տվյալ մեքենայից: V.NET Framework- ը կիրառում է երկաստիճան կազմումը, այսինքն, առաջին փուլը MSIL- ում հավաքածու է, իսկ երկրորդը `կատարման ընթացքում« արդարացի »կազմողի հավաքածուն: JIT կոմպիլյատորը օպտիմիզացնում է կոդը այն մեքենայի համար, որի վրա կատարվում է: ASP.NET- ում էջը կազմվում է MSIL- ում, երբ առաջին անգամ հաճախորդին ղեկավարեք էջը: Դրա հետ միասին կազմված դասերը կազմվում են: Եթե \u200b\u200bդուք օգտագործում եք Visual Studio 2005, ապա չեք կարող ակնկալել առաջին պահանջը, եւ հարկադրաբար կազմվել է ձեր նախագծի բոլոր էջերը: Սա ձեզ թույլ կտա ճանաչել սինթակտիկական եւ այլ սխալներ:

MSIL- ը հավաքիչ է, որը կախված չէ մեքենայից: Այն կարող է իրականացվել ցանկացած մեքենայի վրա, որտեղ տեղադրված է CLR: Mono նախագիծը փորձում է CLR- ին փոխանցել այլ հարթակներում, թույլ տալով, որ փոխկապակցեք տարբեր հարթակներում աշխատող սերվերներին:

Դուք կարող եք ծանոթանալ նախագծին, http://mono-project.com կայքում

Էջը http://go-mono.com/archive/xsp-0.10.html է XSP - ASP.NET սերվեր, որը կարող է ծառայել որպես Apache սերվերի երկարացում `հիմնական սերվեր * NIX համակարգերը:

Ինչպես է աշխատում ASP.NET- ը

Երբ մենք կարդում ենք. Այն ISAPI- ի ընդլայնում է, եւ այն նախատեսվում է ստանալ ASP.NET ծրագրերին ուղղված հարցումներ (* .ASPX * .Asmx եւ այլն), ինչպես նաեւ աշխատատեղեր ստեղծել, վառելիքի պահանջներ: Internet Server - IIS կամ ներկառուցված WebMatrix կամ ներկառուցված Visual Studio Cassini - Օգտագործեք այս ընդլայնումը, երբ նրանք պետք է կարգավորեն ASPX ընդլայնման էջերը:

Այս մոդուլը բաժանարար է (վերլուծեք) ASPX էջերի բովանդակությունը `առանձնացված ծածկագրով ֆայլի հետ միասին եւ էջի լեզու է առաջացնում օբյեկտի էջով: ASPX էջը տարբերվում է սովորական HTML էջի ներկայացումից սերվերի վերահսկումներից, որոնք նկարագրված են հատուկ պիտակներով: ASP.NET- ի շահագործումը հասկանալու համար անհրաժեշտ է նշել, որ կառավարման տարրի յուրաքանչյուր պիտակը համապատասխանում է էջի դասի իր անդամին: Օրինակ,

Վերափոխված B- ի կողմից:

@__ctrl \u003d նոր գլոբալ :: System.web.ui.webcontrols.Label ();

Օբեկտի հիմնական խնդիրն է HTML կոդի ծանրոցը ելքային հոսքի մեջ: Այս դասը կազմվում է գրադարան: DLL, որը բեռնված է վեբ սերվերի գործընթացում: Էջի հետագա պահանջները նաեւ մշակում են DLL- ը, եթե էջի աղբյուրի կոդը չի փոխվում: Այս բոլոր ֆայլերը կարելի է գտնել «Ժամանակավոր ASP.NET ֆայլեր» գրացուցակում. NET: Եթե \u200b\u200bմենք աշխատենք Visual Studio 2005 կամ VWD զարգացման միջավայրում, ապա ձեր ենթագայթը ստեղծվում է յուրաքանչյուր նախագծի համար:

Էջի եւ նախագծի պանակների տեսակները

Նոր ֆայլերի երկխոսության միջոցով կարող եք ավելացնել նոր ֆայլեր: Եթե \u200b\u200bդուք հեռացնում եք տուփը «Տեղադրման կոդը առանձին ֆայլում», Visual Studio- ն կստեղծի մեկ ֆայլ, որում այն \u200b\u200bկլինի էջ եւ կոդ, այն վերամշակելու համար (WebMatrix ոճով):

Բոլոր ֆայլերը տեղադրված են ծրագրի գրացուցակում: Ընդհակառակը, դրա մի մասն կդառնան բոլոր այն ֆայլերը, որոնք տեղադրվելու են ծրագրի գրացուցակում: Վեբ կայքերի համար չկա հատուկ ֆայլ: CSPROJ, որը թվարկվելու է իր բաղադրիչ մասերը, ինչպես դա եղել է Visual Studio- ի նախորդ տարբերակներում: Լուծման կառուցվածքը (լուծում) նկարագրվում է տեքստային ֆայլում: Լուծումը կարող է ներառել մի քանի կայքեր եւ գրադարաններ:

ASP.NET 2.0-ը հատուկ նախագծերի գրառումներ ունի տարբեր տեսակի ֆայլերի համար: Օրինակ, հրապարակայնորեն մատչելի դասեր, տեքստային ֆայլեր եւ մի քանի այլ անձինք պահվում են App_Code պանակում (DataSet, դասի դիագրամ): Ֆայլեր ընդարձակմամբ: CS կամ.VB- ն, որը զվարճանում է, ինքնաբերաբար կազմվում է ցանկացած ծրագրի պահանջվող ցանկացած էջ: APP_DATA- ն պարունակում է նախագծի մեջ օգտագործված տվյալների աղբյուրներ `մուտք եւ Microsoft SQL տվյալների շտեմարաններ, XML ֆայլեր: Այս գրացուցակը հնարավոր չէ մուտք գործել դրսից, բայց միայն հենց դիմումից: Թեմաների թղթապանակների խանութների նախագծի թեմաները (դասախոսություն 13): Թեմաների օգտագործումը թույլ է տալիս հարմարեցնել կայքի միասնական տեսքը եւ կենտրոնականորեն կառավարել դրանք: App_globalresouress- ը պարունակում է ռեսուրսներ, ինչպիսիք են տողի աղյուսակները, որոնք կարող են ստեղծվել տարբեր լեզուներով: Ռեսուրսների լեզուն ինքնաբերաբար ընտրվում է `կախված օգտագործողի զննարկչի պարամետրերից: App_Webreferences Թղթապանակը պարունակում է հղումներ դեպի օգտագործված վեբ ծառայություններ:

Օրինակ, կարող եք ստեղծել ձեր սեփական ծրագրի մուտքը, նկարներ պահելու համար:

Նախագիծ 2 լեզուներով

Վեբ կայքի նախագիծը բաղկացած է ASPX- ից եւ դասերից, որոնք օգտագործվում են էջերում (եւ, իհարկե, տարբեր ռեսուրսներ): Դասերով ֆայլեր, որոնց միջոցով կարող եք կապվել տարբեր էջերից, տեղադրված են հատուկ App_code թղթապանակում: Կազմակերպելիս դրանք տեղադրվում են մեկ ժողովում `գրադարան: DLL շարժական գործադիր ձեւաչափով: Կարեւոր չէ, թե որ լեզվով դասը գրված է, եթե սա լեզու է: NET:

Ծրագրում կարող են օգտագործվել նաեւ երրորդ կողմի արտադրողների պատրաստի կազմված շինությունները: Դրանք տեղադրված են աղբամանի թղթապանակում: Միեւնույն ժամանակ, դրանք պետք է ներմուծվեն նախագծի մեջ:

<%@ Import Namespace="MyCustomNamespace" %>

Ստեղծեք նոր նախագիծ: Ավելացնել ֆայլ դրան, ընտրելով դասի ֆայլի տեսակը եւ տեսողական հիմնական լեզուն: Շրջակա միջավայրը կառաջարկի այն դրել կոդի թղթապանակում: Եկեք այն անվանենք Custuleclass: Նա կունենա շատ պարզ կոդ: Միայն մեկ գործառույթ, որն ավելացնում է Բարեւ բառը, որպես պարամետր:

Ներմուծում Microsoft.VISualBasic հանրային դասի CustomClass հանրային գործառույթ GetMessage (Byval անվանումը որպես լար) որպես լարային վերադարձ «Բարեւ» եւ Անունը Function End Class

Ծրագիր Codefolder_cs.aspx էջը: Այս էջը գրված է C # վրա, բայց այն ստեղծում է VB.NET- ի վրա գրված դաս:

<%@ page language="C#" %> ASP.NET Ներքին էջեր:

Բարի գալուստ ASP.NET 2.0!

ՄՈՒՏՔԱԳՐԵՔ ՁԵՐ ԱՆՈՒՆԸ:

Էջը սահմանում է ձեւաթուղթ, որը նման է Windows հավելվածի ձեւին: Այն ունի կոճակ, կտտացնելով, որի վրա վերամշակվում է կոճակի 1-ին գործառույթում: Այն ստեղծում է դաս, եւ դրա GetMessage գործառույթը կոչվում է պարամետրով, որը վերցված է խմբագրման տարրից: Վերադարձի արժեքը գրանցվում է Label1- ի տարրում: Ավելի պարզ տարբերակով դա կարծես այսպիսին է.

Label1.text \u003d "Hello" + TextBox1.TExt;

Դասարանը կարող է գրվել C #-ում եւ տեսողական հիմնական էջից օգտագործված էջից:

օգտագործելով համակարգը; Հասարակական դասի Custuchclass2 (լարային մուտք) (Վերադարձեք «Բարեւ, C #» + մուտքից;)) CODEFOLDER_VB.AST:

Այնուամենայնիվ, հնարավոր է տեղադրել App_code Directory- ում նույն լեզվով: Եթե \u200b\u200bտարբեր լեզուներով ֆայլեր կան, նախագիծը չի կազմելու: Երկու լեզու օգտագործելու համար դուք պետք է ստեղծեք ենթադաս, ապա ավելացրեք այն web.config ֆայլի մեջ եւ տեղադրեք ֆայլերը մեկ այլ լեզվով:

Գրանցում web.config ֆայլում.

... ...

Հրահանգ

Յուրաքանչյուր ASPX էջում սովորաբար նշվում են, թե որ կարող եք վերահսկել էջի պահվածքը: Կարող եք հաշվի առնել նրանց լեզուն, որի միջոցով շփվում եք կազմողի հետ, մատնանշելով այն, թե ինչպես մշակել այս էջը: Հրահանգները սովորաբար տեղադրվում են ֆայլի սկզբում: Մենք առաջին դասախոսության մեջ արդեն հանդիպել ենք հրահանգի էջի հետ:

Sintaskis գովազդի հրահանգներ, ինչպիսիք են.

<%@ %>

Միեւնույն ժամանակ կարող եք մի քանի հրահանգներ հայտարարել.

<%@ %>

ASP.NET 2.0-ում կա 11 հրահանգ:
Հրահանգի ատրիբուտներ Նկարագրություն
@Ass հեգնյա անուն:
ՊԵԿ-ը ներմուծում է էջի կամ հավաքման հսկողության ներքո նշված անունով
@Control- ը նույնն է, ինչ էջը օգտագործվում է ձեր սեփական օգտվողի վերահսկողությունը ստեղծելիս հատկությունները նշելու համար:
@Implements ինտերֆեյսը ցույց է տալիս, որ այս էջի դասը իրականացնում է այս ինտերֆեյսը
@Import namespace ներմուծում Անուններ
@MESTer- ը նույնն է, ինչ էջը վերաբերում է դիզայնի ձեւանմուշների էջերին (Վարպետ էջ): Նոր ASP.NET 2.0-ում
@MasterType TypeName.
VirtualPath- ը տալիս է խստորեն մուտքագրված հղում դեպի դիզայնի ձեւանմուշում պարունակվող դասարան: Թույլ է տալիս մուտք ունենալ այս դասի հատկությունները:
@Outputcache տեւողությունը
Գտնվելու վայր
Varybycustom
Varybyheader.
Վարիբիպարամ:
VarybyControl- ը կառավարում է պահոցների էջը կամ վերահսկողությունը: Կարդացեք ավելին նկարագրված դասախոսություններում 15:
@Page Տես այս էջի հետ կապված հատկանիշները: Օգտագործվում է միայն ASPX ընդլայնմամբ ֆայլերում
@PreviouspageType տիպի անուն:
VirtualPath Այն էջը, որի հետ ուղարկվել են օգտագործողի մուտքագրված տվյալները: Նոր ASP.NET 2.0-ում: Նախկինում էջերը գրառումը ուղարկեցին միայն իրենց:
@Reference էջը
Կառավարման էջը կամ վերահսկողությունը, որը պետք է կազմվի այս հետ միասին
@Register ժողով
Անուններ
ՊԵԿ
Tagname.
Tagprefix- ը uniases է ստեղծում անունների եւ օգտագործողի վերահսկման համար

Մինչ այժմ հաշվի առեք դրանցից 2-ը `Էջեր եւ ներմուծում:

Էջի հրահանգ

Էջի հրահանգը թույլ է տալիս սահմանել էջի հատկությունները `կազմման ընթացքում օգտագործվելու համար: Այս հրահանգն օգտագործվում է ավելի հաճախ, քան մնացածը, այնպես որ այն պետք է հաշվի առնել ավելի մանրամասն:

Հրահանգի ամենակարեւոր հատկանիշները նշված են աղյուսակում.

Autoeventwireup. Ավտոմատ էջի իրադարձությունների մշակում
Բուֆեր: Կառավարում է էջերի բուֆերը: Ըստ լռելյայն, բուֆեր
Դասանուն: Թույլ է տալիս ձեզ նշանակել այս էջի ստեղծած դասի անվանումը:
Codefile. Ֆայլի անունը առանձնացված կոդով այս էջի համար
Մշակույթ: Սահմանում է տարածաշրջանային պարամետրերի հավաքածուն, այսինքն: Լեզուն, արտարժույթի ձեւաչափը, ամսաթվերը, համարները
Կարգաբերել: Եթե \u200b\u200bճշմարիտ է, կարգաբերման տեղեկատվությունը ցուցադրվում է էջում:
Հետք TRACE տեղեկատվության թարգմանություն
Միացնել դիտումը: Էջի կարգավիճակը խնայելը: Լռելյայն, այն պահվում է
Հնարավորություն: Թույլ է տալիս միացնել կամ անջատել դիզայնը: Լռելյայն է
Ժառանգություններ: Դասը, որից այս էջի դասը առանձնացված ծածկագրի տեխնոլոգիայում ժառանգվում է:
Isasync. Ցույց է տալիս, թե արդյոք էջը մշակվում է ասինխրոն:
Լեզու. Ներկառուցված կոդում օգտագործվող լեզուն
Warninglevel. Կազմողի նախազգուշացումների ամենամեծ թույլատրելի մակարդակը
Կազմեք: Լրացուցիչ ընտրանքներ

Դասի գրադարան Անուններ

FCL դասերի գրադարանը պարունակում է հազարավոր դասեր: Օգտագործման հեշտության համար դրանք համակցված են անվանման տարածքի մեջ: Անունների տարածքում հայտարարված դասընթացներին մուտք ունենալու համար, առանց ամբողջական ուղին նշելու, այն պետք է ներմուծվի նախագիծ: Եթե \u200b\u200bցանկանում եք աշխատել XML ձեւաչափի ֆայլերով, ապա հարկավոր է ներմուծել համակարգը: xml անվանամազ: C #- ի առանձնացված կոդերի էջերում, ինչպես միշտ, օգտագործվում է օգտագործման հրահանգ:

Օգտագործելով համակարգը: Xml;

ASPX էջում `ներմուծման հրահանգ

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

Յուրաքանչյուր անվանման վայրի համար անհրաժեշտ է ներմուծման առանձին հրահանգ:

Visual Studio.NET- ը եւ VWD- ը լռելյայն ներառված են C # էջում, ամենատարածված անվանումները: ASPX էջի ներմուծում Այս անունները պարտադիր չէ:

օգտագործելով համակարգը; Օգտագործելով համակարգը: Data; Օգտագործելով համակարգը: Configuration; Օգտագործելով համակարգը: Օգտագործելով համակարգը .Web; Օգտագործելով համակարգը .web.securance; Օգտագործելով համակարգը .web.ui; Օգտագործելով համակարգը .web.ui.webcontrols; օգտագործելով համակարգը .web.ui.webcontrols.webparts; Օգտագործելով System.web.ui.htmlcontrols;

Օրինակ, համակարգում .Web.ui namspace- ը դասի էջ է, առանց որեւէ ASP.NET էջի, համակարգում .Web - httprecest եւ httpresponse:

Class Viewer ծրագիրը

Ինչպես պարզել, թե որ դասերն են մատչելի դասերի գրադարանում: Սա նախագծված է օբյեկտի զննարկչի (Visual Studio 2005) եւ դասի զննարկիչ WebMatrix- ի կողմից: Visual Studio 2005 կամ VWD Express- ում Object Browser- ը բացելու համար ընտրեք դիտում-\u003e օբյեկտի զննարկչի ընտրացանկի տարրը: Եթե \u200b\u200bդուք օգտագործում եք WebMatrix, Class Browser- ը տեղակայված է Windows Menu անկի նույն թղթապանակում, ինչպես WebMatrix - Բոլոր ծրագրերը `\u003e ASP.NET WebMatrix: ASP.NET դասի զննարկչի ձեւաչափը ներառված է SDK շրջանակներում:

Բոլոր մատչելի անունները ցուցադրվում են որպես ծառի կառուցվածքի հանգույցներ: Մեզ հետաքրքրում է համակարգը: Web .Web. Բացեք այս հանգույցը: Ներսում եղել են այլ անուններ: Բաց համակարգ. Web.ui. Կան մեծ թվով դասեր, միջերեսներ, պատվիրակներ, թվարկություններ: Դուք կարող եք գտնել դրանք սրբապատկերների վրա: Օրինակ, պատվիրակության պատկերակը նման է ճամպրուկին:

- դաս

- Ինտերֆեյս

- իրադարձություն

- ցուցակագրում

- մեթոդ

Ընտրեք էջը: Իր մեթոդների, դաշտերի եւ իրադարձությունների ցուցակը կհայտնվի ճիշտ պատուհանում: Եթե \u200b\u200bընտրեք մեթոդը, նրա նկարագրությունը կհայտնվի երրորդ պատուհանում: Դասի ներսում կան եւս երկու պանակ, բազային դասեր եւ սերունդների դասեր: Բոլորն էլ կարելի է դիտարկել: Օբեկտների զննարկիչը ցույց է տալիս ընթացիկ նախագծի դասերը: Եթե \u200b\u200bդասերը մեկնաբանվում են XML փաստաթղթերի ստեղծման պիտակներով, ապա այս տեղեկատվությունը նույնպես տեսանելի է, օրինակ, ամփոփ, պարամետրեր, արժեքներ, վերադառնում է:

Ուսումնասիրելով ispostback գույքը, կարող եք պարզել, որ այն ունի բուլյան արժեք եւ միայն նախագծված է կարդալու համար:

Ստուգեք համապատասխանության ստանդարտները

Կան տարբեր HTML եւ XHTML ստանդարտներ: Հետագայում ստանդարտները ենթադրում են ավելի խիստ պահանջներ, օրինակ, XHTML 1.1-ը թույլ չի տալիս
եւ այլ պարզ պիտակներ `առանց փակման փակման
, Միեւնույն ժամանակ, հին չափանիշները չեն աջակցում նոր պիտակների:

HTTP հարցման վերնագիրը նշում է փաստաթղթերի ստանդարտը, Visual Studio 2005-ը բոլոր էջերում նշվում է հետեւյալ ստանդարտը.

Այս ստանդարտը պահանջում է xmlns հատկանիշը պիտակի մեջ - Հղումներ դեպի ստանդարտը նկարագրող կայքը:

ASP.NET- ի նախորդ տարբերակների համար պատրաստված շատ էջեր նման հատկանիշ չունեն: HTML աղբյուրի խմբագրման ներդրումային վահանակում կա նաեւ բացվող ցուցակը, որում կարող եք ընտրել զննարկչի ստանդարտ կամ տարբերակը, որի համար նախատեսված է այս էջը: Էջը ավտոմատ կերպով ստուգվում է այս ստանդարտին համապատասխանության համար:
Հատկությունների էջ

Էջը համացանցային դիմումի ամեն ինչի հիմքն է:

System.web.ui.page Class- ը ընդգրկում է ASP.NET էջերը ստեղծելու եւ մշակելու համար անհրաժեշտ ֆունկցիոնալությունը:

ASP.NET- ի յուրաքանչյուր էջը դասի առարկա է, որն ինքնաբերաբար ստեղծվում է ASP.NET միջուկի կողմից: Դասարանը ժառանգվում է էջի հետ կապված դասից, եթե մենք օգտագործում ենք առանձնացված ծածկագիր կամ ուղղակիորեն ժառանգված համակարգից: Web.ui.page Եթե էջում ներառված է C # կոդը: Չորեքշաբթի օրը ստեղծում է նաեւ լռելյայն դիզայներ:

Համոզվելու համար, որ մենք կարող ենք ստեղծել pagetype.aspx էջ.

<%@ Page Language="C#" %> Էջի տեսակը

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

Ահա արդյունքը.


Այս էջի հիմնական տեսակը System.web.ui.page

Նույն էջը, որը ստեղծվել է կոդի տարանջատման տեխնոլոգիայով:

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

Գրում է արդյունքը

Այս էջի տեսակը ASP.Pagetype_aspx
Այս էջի հիմնական տեսակը pagetype

Այն փաստը, որ Pagetype- ը համակարգի ժառանգ է: Web.ui.page, գրված է առանձնացված կոդի ֆայլում.

Հասարակական մասնակի դասի pagetype. System.web.ui.page

Ներկայիս էջի օբյեկտին կարող եք դիմել որպես փոփոխական էջ: Էջը այս էջի կառավարման տարրերի բեռնարկղ է, հետեւաբար, պարունակում է հսկիչների հավաքածու: Եթե \u200b\u200bteg- ում Գոյություն ունի Runat \u003d «սերվերի» հատկանիշ, ապա էջը պարունակում է վերնագրի դաշտ, որի միջոցով կարող եք վերահսկել վերնագրի էջը: Օրինակ, էջի անունը փոխեք զննարկչի վերնագրում, հատկացրեք ոճերի կասկադային սեղանի ֆայլ:

Ողջույն ASP.NET:

Սովորեք ծրագրավորել ASP.NET- ում

Այս օրինակում մենք փոխեցինք վերնագրի տեքստը: Գործարկել այս էջը: Արդյունքում HTML կոդի մեջ պիտակի ներսում Այլեւս չկա «անթիվ էջ», բայց «նոր վերնագիր», որը տեղադրվել է էջի միջոցով: Ուղեւորություն: Ստեղծվեց պիտակը <p>Ինչն էր արտացոլվում այս եղանակով.</p> <p><style type="text/css"> p { color:Blue;background-color:Beige; } </style></p> <p>CSS արտաքին էջը ներմուծվել է ֆայլից:</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.

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

Тег