MVC 5, speciális segítő módszerek
Ebben a cikkben megnézzük segítő módszerek, amelyek lehetővé teszik a csomagolás kódrészre és jelölő úgy, hogy újra fel lehet használni az ASP.NET MVC Framework alkalmazás. Kezdjük azzal, hogy megmutatjuk, hogyan lehet létrehozni saját segítő módszereket.
például alkalmazások
A jelen cikk alkalmazásában a Visual Studio létrehozott egy új MVC elnevezésű projekt HelperMethods az üres sablon (üres) és az MVC védjegy dobozok alatt hozzáadása mappák és mag referenciák (Add mappák és az alapvető hivatkozások). A tervezetben vezérlő hozzáadott Home, kódja, amely látható az alábbi példában:
Az eljárás lépései Index () képviselete keresztül továbbítjuk egy pár tömbök string objektumot ViewBag, és meghatározott objektum típus karakterlánc modellek. A mappa / Views / Home létrehozott fájl benyújtása Index.cshtml tartalmával megadott az alábbi példát. Ez egy erősen típusos képviselet (egyfajta modellt string), és nem vonatkozik az elrendezést.
Hogy milyen ez a nézet jelenik meg, akkor szükség van az alkalmazás futtatásához. Normál útválasztási konfigurációs hozzáadjuk a Visual Studio projekt, amely megjeleníti az URL a gyökér, automatikusan a böngésző által igényelt, az Index fellépés a vezérlő Home:
Létrehozása speciális segítő módszerek
Mi lesz elmagyarázni a működését segítő módszerek saját maga által készített végrehajtás. Két különböző megközelítések létrehozását speciális segítő módszerek láthatók a következő részekben.
Létrehozása beágyazott segítő módszer
A legegyszerűbb módszer, egyfajta kisegítő süllyesztett kiegészítő módszer, amely úgy definiálható a nézet. Mi is létrehozhatunk egy plug-helper eljárás egyszerűsítése megértéséhez például a fogantyú segítségével @helper. amint azt az alábbi példa mutatja:
Mint rendes C # módszerek, beépített segítő módszerek nevét és paramétereit. Ebben a példában, egy kiegészítő módszer elemzi ListArrayStringItems () definiáltuk, hogy elfogad egy paraméter karakterlánc tömb. Bár a süllyesztett kiegészítő módszer úgy néz ki, mint a módszer, a visszatérési érték hiányzik. A tartalma a járulékos test a módszer kerül feldolgozásra, és helyezzük a válasz, amelynek célja az ügyfél számára.
Megjegyezzük, hogy amikor a beágyazott kiegészítő módszer vezet ViewBag dinamikai tulajdonságainak egy objektum, hogy egy string tömb nem szükséges. Az egyik jellemzője ennek különböző segédprogram módszerek kapcsolódó értékelési típusok futási időben.
A szervezetben a beágyazott kiegészítő módszerrel ugyanazt a szintaxist használja, mint a többi a bemutató borotvát. Betűs húrok kezelik statikus HTML jelölőnyelv, és a piaci szereplők, amelyek megkövetelik Razor mechanizmus feldolgozása, az előtag a @ szimbólumot. Segítő példa módszerét keverékek statikus HTML-kód és Razor kezeli át a tömböt, ami ugyanazt a kimenetet, mint az eredeti ötlet, de csökkenti a párhuzamos prezentáción belül.
Az előnye ennek a megközelítésnek az az oka, hogy ha meg akarja változtatni a megjelenítési mód a tartalmát egy tömb, akkor meg kell csinálni egy helyen. Egy egyszerű példa, az alábbi példában, és nem csupán a két kimeneti értékek érvényesek elemek rendezetlen lista HTML:
Változások volt, hogy csak egy helyen. Úgy tűnhet, a kis előnye az egyszerű kialakítás, de ez egy kényelmes módja annak, hogy ötleteket egyszerű és harmonizált egy igazi projekt. Az eredmény a változások az alábbiakban mutatjuk be:
Megjegyezzük, hogy a fenti példában a kulcsszó foreach kell előtaggal @, de a fenti példában, ez még mindig nem ez a helyzet. Ennek az az oka, hogy az első elem a szervezetben segítő módszer lett módosítva, hogy egy HTML-elem, ami azt jelenti, hogy meg kell használni a @ jel jelenteni Razor mechanizmus használata C # operátor. Az előző példában nem voltak HTML-elemeket, így Razor mechanizmus azt javasolta, hogy a tartalom egy kódot. Az ilyen kis funkciók elemzési eszközök nehezen lehet nyomon követni, de szerencsére, a Visual Studio szerda védjegyek ilyen hiba.
Amely egy külső segítő módszer
Beágyazott segítő módszerek kényelmes, de ezek csak a nézet is használható, melyek nyilatkoznak, és ha ezek az eljárások közé tartozik egy csomó kód, a képviseletet nehéz leolvasni.
Egy másik lehetőség, hogy hozzon létre egy külső kiegészítő eljárás, HTML, amely kifejezve bővülő C # módszerrel. Külső segítő módszerek szélesebb körben használják, de ezek kissé kényelmetlen írásban, mivel C # nem támogatja a generációs elegáns HTML-elemeket. Annak igazolására, ezt a funkciót mintaprojekt hozzáadott mappa Infrastructure, amely helyezett egy új osztályt nevű fájlt CustomHelpers.cs:
helper módszer kidolgozására van funkciója ugyanaz, mint a beágyazott kiegészítő módszer az előző példában - ez lesz egy tömböt, és létrehoz egy HTML-elem
- , elem, amely tartalmaz
- minden egyes sorban a tömbben.
Az első paraméter a külső HTML helper módszer a HtmlHelper objektumot. előérzete, ez a kulcsszó, hogy elmondja C # fordító által definiált kiterjeszti a C # módszerrel. HtmlHelper objektum információkhoz való hozzáférés, amely hasznos lehet, ha a tartalom létrehozása révén a jellemzőket pedig az alábbi táblázat tartalmazza:
Hasznos tulajdonságai meghatározott osztályba HtmlHelper
Visszaadja egy példány végrehajtásának IVIEW, ahonnan a kiegészítő módszerként hívták
Információt, hogy lehet, kérésre meglehetősen kiterjedt, de a legtöbb segítő módszerek egyszerűek és arra használják, hogy konzisztens formázást. Használhatja a beépített segítő módszerek, specifikus kérelmek tartalommal (ezek a módszerek lesz szó a következő cikkben) és részleges felelősséget vagy leányvállalatai akció megoldására bonyolultabb problémákat.
TagBuilder új példány jön létre a kivitelező át paraméterként a neve HTML-elem, amelyet meg kell építeni. Ha egy osztály TagBuilder kacsacsőrök (<и>) Nem szükséges, azaz a elem
- , például úgy hozható létre a következők szerint:
- , és visszaadja képalkotó mechanizmus reagálva szerelést.
A speciális külső kiegészítő módszer
Különleges külső segítő módszert alkalmaznak egy kicsit másképp, mint a beágyazott módszer. Az alábbi példa mutatja változások /Views/Home/Index.cshtml fájlt, és helyettesítheti a beágyazott kiegészítő külső egy módszer:
Gondoskodnunk kell arról, hogy a névtér megállapítás, amely egy kiegészítő bővülő módszer hatálya alá. Ezt használja a fogantyút @using. de ha kifejlesztett számos speciális segítő módszerek, akkor van értelme, hogy adjunk nekik tartalmazó névtér /Views/Web.config fájlt, így mindig rendelkezésre állnak a nézetben.
Az adatátvitel helper eljárás, mintha a beágyazott módszer vagy C #, bár ügyelni kell összehangolni a dinamikus tulajdonságai objektum ViewBag meghatározott típusú külső kiegészítő eljárás, amely ebben az esetben a tömb karakterlánc. A szintaxis nem olyan elegáns, mint használt a beágyazott segítő módszerek, de ez az ár részét képezi meg kell fizetni a lehetőséget, hogy hozzon létre egy segítő módszer, amely lehetővé teszi a készítmény használatát véve a projekt.
Mikor kell használni segítő módszerek?
Most, hogy már tudja, hogyan működik segítő módszerek, van egy ésszerű kérdés: mikor kell használni őket, hanem a részleges felelősséget vagy gyermek tevékenységét, különös tekintettel arra a tényre, hogy a funkcionalitás támogatják átfedésben van?
ÉN használ segítő módszerek csak csökkenti a hangerőt a kettős kód és a jelöléseket a reprezentációk, ahogy ez a fenti példában, és csak az egyszerű tartalom. Bonyolultabb elrendezés és a tartalmát használom részleges képviseletet, és amennyiben szükséges, végezze el a szükséges adatok manipulálásával modell, a gyermek tevékenységét. Azt javasoljuk, ragasztás ugyanezt a megközelítést, és próbálja megtartani a segítő módszerek a lehető legegyszerűbb. (Ha az én segítő módszerek több mint öt szereplők C # C # vagy több kezelő, mint a HTML-elemeket, én inkább a részleges kilátás.)
kódoló kontroll vonalak az al-módszerrel
ASP.NET MVC Framework infrastruktúra védelmet nyújt a kártékony adatok automatikusan titkosítja azokat, hogy lehet biztonságosan hozzá a HTML-oldal. Egy példa az ilyen kódolás látható a vezérlő Fő alkalmazási tervbe van véve, ha a képviseletet az objektum modell átadásra potenciálisan megbízhatatlan sor:
Ez az objektum modell tartalmaz egy érvényes HTML-elem, de amikor az érték láthatóvá Razor, megkapjuk a következő HTML-kódban:
demonstrációs problémák
Annak igazolására, a probléma, CustomerHelpers osztály létrehozott egy új segítő módszert, amint azt az alábbi példa:
Ez a módszer helper elfogadja a karakterláncot paraméter, és előállítja ugyanaz a HTML-jelölést, ami benne van a képviselet Index. Használata String.Format () módszer generált HTML-nyílás, amely vezetjük érvként, hogy a kivitelező MvcHtmlString. A következő példa azt mutatja, a változások a képviselet /View/Home/Index.cshtml, hogy az új kiegészítő módszer (Ezen kívül is változás történik a tartalom kiüríthető, amely fogadja ettől a kiegészítő módszer):
Az alkalmazás futtatása, az eredmény egy új segítő módszer is látható:
Leányvállalata, megbízható módszer generáló biztonságos tartalom, amely, sajnos, akkor a böngésző megjeleníti az elem , és ez a viselkedés lehet használni a hackerek megtörni a kérelmet.
Coding segítő módszer tartalom
Van egy pár módon lehet használni, hogy megoldja ezt a problémát, és a választott egyikük természetétől függ a tartalom által generált leányvállalata. A legegyszerűbb megoldás kell megváltoztatni, a visszatérési típus segítő módszer a húr, amint az az alábbi példában. Ez megakadályozza, hogy a renderelő motor, hogy a tartalom nem biztonságos, és meg kell kódolni, mielőtt hozzáadjuk a bemutató:
Ez a módszer vezet az a tény, hogy a Razor kódolni fogja az összes tartalom által visszaadott másodlagos eljárás, ami problémát okoz az a helyzet, amikor generált HTML-elemek (ebben a példában), de mivel nagyon kényelmes más esetekben. Az eredmény alább látható:
A probléma az elem oldani, de az elemek
továbbá, hogy a kódolt, hogy nem illik. Ilyen helyzetekben szükséges nagyobb szelektivitás csak kódolják az adatokat értékeket. Az alábbi példa bemutatja, hogyan kell ezt csinálni:
A HtmlHelper osztály határozza meg egy példány módszerrel elemzi Kódolás (). amely megoldja a problémát, és kódol egy karakterláncot úgy, hogy biztonságosan lehet benne a bemutatót. A probléma ezzel a módszerrel az, hogy ne felejtsük el, hogy használja azt. Minden adat értékek világosan kódolva az elején a módszer, valamint emlékeztetőül, ez a megközelítés még előnyösebb.
Az eredmény azt mutatja, változások az alábbiakban ismertetett:
Itt látható, hogy a tartalom által generált külső kiegészítő egybeesik generált tartalmak használata révén modell értékeket közvetlenül a reprezentáció.
Kapcsolódó cikkek
A leghasznosabb tagok TagBuilder osztályba vannak leírva az alábbi táblázat:
Hasznos módszerek és tulajdonságok meghatározott osztályba TagBuilder
Módszer vagy tulajdonság
Az ingatlan, amely lehetővé teszi, hogy azt HTML-line tartalom elem. A megadott érték, hogy a tulajdon, nem kódolt, azaz via HTML elemek tulajdonságai ágyazhatók
Beállítja a szöveges tartalom a HTML-elem. A paraméter karakterlánc van kódolva, hogy a tartalmát a biztonságos megjelenítéséhez
MergeAttribute (string, string, bool)
Hozzáad egy attribútumot a HTML-elem. Az első lehetőség - ez a tulajdonság neve, és a második - az értékét. Használja a bool paraméter jelzi, hogy vagy nem kell cserélni egy meglévő attribútum azonos névvel
Az eredmény egy HTML segítő módszer MvcHtmlString objektumot. amelynek tartalma van írva közvetlenül reagálva, amelynek célja az ügyfél. Ebben a példában, a kiegészítő eredmény hívó módszer TagBuilder.ToString () vezetünk az új tárgyat kivitelező MvcHtmlString, az alábbiak szerint:
Ez a fragmens operátor generál HTML-jelölőnyelv elemeket, amely tartalmaz
- és
- , és visszaadja képalkotó mechanizmus reagálva szerelést.