Család Forma Lekéri a HTTP-kérés törzsében elküldött űrlapelemek értékeit a POST módszert használó űrlap használatával.
Szintaxis
Kérés nyomtatvány(elem) [(index) |.Számol]
Lehetőségek
elem
Annak az űrlapelemnek a neve, amelyből a család értékeket kér le.
index
Opcionális paraméter, amely lehetővé teszi a több paraméterérték egyikének elérését. Bármilyen egész szám lehet -1 és között Kérés nyomtatvány(paraméter).Számol.
Megjegyzések
Család Forma paraméternevekkel indexelve a kérés törzsében. Jelentése Kérés nyomtatvány(elem) az összes érték tömbje elem, amelyek a kérelem törzsében jelennek meg. A paraméterértékek számát hívással határozhatja meg Kérés nyomtatvány(elem).Számol. Ha a paraméterhez nem tartozik több érték, a számláló 1. Ha a paraméter nem található, a számláló 0.
Ha több értékkel rendelkező űrlapelem egyetlen értékére szeretne hivatkozni, meg kell adnia a következő értéket index. Paraméter index bármilyen szám lehet 1 és 1 között Kérés nyomtatvány(elem).Számol. Ha több űrlapparaméter közül az egyikre érték nélkül hivatkozunk index, az adatok vesszővel elválasztott karakterláncként kerülnek visszaadásra.
Amikor Kérés nyomtatvány paraméterekkel használva a webszerver elemzi a HTTP kérés törzsét, és visszaadja a megadott adatokat. Ha az alkalmazás nem elemzett adatokat igényel egy űrlapról, akkor azt a telefonszámon érheti el Kérés nyomtatvány paraméterek nélkül.
Jegyzet. Ha ASP-vel dolgozik és 100 KB-ot meghaladó mennyiségű adatot küld, a módszer Kérés nyomtatvány nem használható. Ha az alkalmazásnak ezen a határon túl kell adatokat küldenie, létrehozhat egy komponenst, amely a Request.BinaryRead.
Lehetőség van az összes adatérték iterálására egy űrlapkérésben. Például, ha a felhasználó kitölt egy űrlapot úgy, hogy a FavouriteFlavor elemhez két értéket ad meg, Chocolate és Butterscotch, akkor ezeket az értékeket az alábbi szkript segítségével kinyerheti.
For i = 1 To Request.Form("FavoriteFlavor").Szám
Response.Write Request.Form("KedvencFlavor")(i) & "
"
A fenti szkript a következő információkat jeleníti meg.
Ezzel a technikával megjelenítheti a paraméter nevét, amint az az alábbi szkriptben látható.
Ha i = 1, akkor a Request.Form("FavoriteFlavor").count %>
Request.Form(FavoriteFlavor) =<%= Request.Form("FavoriteFlavor")(i)_
%>
Ez a szkript a következőket jeleníti meg a böngészőben:
Request.Form(FavoriteFlavor) = Csokoládé
Request.Form(FavoriteFlavor) = Butterscotch
Példa
Vegye figyelembe a következő formát:
Az ábra azt mutatja, hogyan nézne ki ez az egyszerű oldal egy webböngésző ablakban:
Amikor a felhasználó a Küldés gombra kattint, a böngésző lekéri az egyes vezérlőelemek aktuális értékeit, és hosszú karakterláncot alkot belőlük. Ezt a karakterláncot ezután elküldi a kezelõben megadott oldalra
Utolsó frissítés: 2015.10.31
Bár tetszőleges segédprogramot magunk is írhatunk, az MVC-keretrendszer már most is nagy készletet biztosít beépített html helpereknek, amelyek lehetővé teszik, hogy ilyen-olyan jelöléseket generáljunk, főleg az űrlapokkal való munkához. Ezért a legtöbb esetben nem kell saját segédeket létrehoznia, és használhatja a beépítetteket.
Html.BeginForm segítő
Használhatunk szabványos html elemeket űrlapok létrehozásához, például:
Ez egy egyszerű html űrlap, amely a gombra kattintáskor elküldi az összes bevitt adatot. POST kérés/Home/Vásárlás. A beépített BeginForm/EndForm helper lehetővé teszi ugyanazon űrlap létrehozását:
Adja meg nevét |
|
Írja be a címet: |
|
A BeginForm metódus paraméterként veszi a műveleti metódus nevét és a vezérlő nevét, valamint a kérés típusát. Ez a segítő kezdőcímkeként hoz létre
. Ezért amikor a nézetet a kimeneti adatfolyamba rendereljük, ugyanazt a html kódot kapjuk, mint a form tag esetében. Ezért a két módszer azonos.Itt van egy pont. Ha ugyanannak a metódusnak két változata van megadva a vezérlőben - például a POST és a GET metódusokhoz:
Public ActionResult Buy() ( return View(); ) public string Vásárlás(vásárlás vásárlás) ( .............. return "Köszönjük, hogy megvásárolta a könyvet";; )
Vagyis az űrlapot tartalmazó oldal felhívása és az űrlap elküldése ugyanazzal a Vásárlási művelettel történik. Ebben az esetben lehetőség van arra, hogy ne adjunk meg paramétereket a Html.BeginForm helperben:
@using(Html.BeginForm()) ( ............. )
Információs bejegyzés
Az előző példa szabványos html elemeket használt a Html.BeginForm helper mellett. A html helper készlet azonban tartalmaz segítőket is a felhasználói bevitelhez. Az MVC szinte minden html elemhez számos beviteli segédet definiál. Mit válasszunk - segítő vagy szabványos html beviteli elemek, a fejlesztő maga dönti el.
Típustól függetlenül minden alapvető html helper legalább két paramétert használ: az első paraméter az id és name attribútumok értékeinek beállítására szolgál, a második paraméter pedig az value attribútum értékét.
Html.TextBox
A Html.TextBox segítő létrehoz egy bemeneti címkét egy szöveg type attribútumértékkel. A TextBox helper a felhasználói bevitel fogadására szolgál. Tehát írjuk át az előző űrlapot úgy, hogy a beviteli mezőket a Html.TextBox helperre cseréljük:
@using(Html.BeginForm("Vásárlás", "Home", FormMethod.Post)) (
Adja meg nevét:
@Html.TextBox("Személy", "Név megadása")Írja be a címet:
@Html.TextBox("Cím", "Adjon meg egy címet") }Ugyanazt az eredményt kapjuk:
Html.TextArea
A TextArea segédprogram elem létrehozására szolgál
a következő html jelölések lesznek:
Felhívjuk figyelmét, hogy a segítő dekódolja a benne elhelyezett értéket, beleértve a html címkéket (minden segítő dekódolja a modellértékeket és az attribútumértékeket). A TextArea segédprogram más verziói lehetővé teszik a szövegmező méretét meghatározó sorok és oszlopok számának megadását.
@Html.TextArea("text", "hello
világ", 5, 50, null)
Ez a segítő a következő jelöléseket hozza létre:
Html.Rejtett
Az űrlappéldában egy rejtett mező bemenetet használtunk type="hidden" , amely helyett csak a Html.Hidden segítőt használhattuk volna. Tehát hívja a következő segítőt:
@Html.Hidden("Könyvazonosító", "2")
jelölést generál:
És amikor egy változót adunk át a ViewBag-ból, akkor azt a következő karakterlánc-típusba kell átadnunk: @Html.Hidden("BookId", @ViewBag.BookId mint string)
Html.Jelszó
A HTML.Password létrehoz egy mezőt a jelszó megadásához. Hasonló a TextBox segítőhöz, de a beírt karakterek helyett a jelszómaszkot jeleníti meg. Következő kód:
@Html.Password("UserPassword", "val")
jelölést generál:
Html.RadioButton
A Html.RadioButton segédprogram rádiógombok létrehozására szolgál. Létrehoz egy bemeneti elemet type="radio" értékkel. A választógombok csoportjának létrehozásához mindegyikhez ugyanazt a nevet kell rendelnie (név tulajdonság):
@Html.RadioButton("szín", "piros") piros
@Html.RadioButton("szín", "kék") kék
@Html.RadioButton("szín", "zöld", igaz) zöld
Ez a kód a következő jelölést hozza létre:
piros
kék
zöld
Html.CheckBox
A Html.CheckBox segítségével egyszerre két elemet hozhatunk létre. Vegyük például a következő kódot:
@Html.CheckBox("Engedélyezés", hamis)
Ez a kifejezés a következő HTML-t generálja:
Vagyis magán a jelölőnégyzeten kívül egy rejtett mező is generálódik. Miért van rá szükség? A lényeg az, hogy a böngésző csak akkor küldi el a jelölőnégyzet értékét, ha a jelölőnégyzet be van jelölve vagy be van jelölve. A rejtett mező pedig biztosítja, hogy az Engedélyezés elem értéke akkor is be legyen állítva, ha a felhasználó nem jelölte be a négyzetet.
Html.Címke
A Html.Label segítő létrehoz egy elemet , és a helpernek átadott paraméter határozza meg a for attribútum értékét és egyben az elemen lévő szöveget. A helper túlterhelt változata lehetővé teszi a for attribútum értékének és a címkén lévő szövegnek egymástól függetlenül történő meghatározását. Például a Html.Label("Name") segéddeklaráció a következő jelölést hozza létre:
A címkeelem egy egyszerű címke, amely információkat csatol a beviteli elemekhez, például szövegmezőkhöz. A címkeelem for attribútumának tartalmaznia kell a társított bemeneti elem azonosítóját. Amikor a felhasználó egy címkére kattint, a böngésző automatikusan áthelyezi a fókuszt az adott címkéhez társított beviteli elemre.
Html.DropDownList
A Html.DropDownList segítő létrehoz egy legördülő listát, azaz egy elemet . Egy ilyen lista létrehozásához a listaelemeket képviselő SelectListItem objektumok gyűjteményére van szüksége. A SelectListItem objektum Szöveg (a megjelenítendő szöveg), Érték (maga az érték, amely nem egyezik meg a szöveggel) és Kijelölt tulajdonságokkal rendelkezik. Létrehozhat SelectListItem objektumok gyűjteményét, vagy használhatja a SelectList súgót. Ez a súgó az IEnumerable objektumokat vizsgálja, és SelectListItem objektumok sorozatává alakítja át. Például a @Html.DropDownList("countires", new SelectList(new string ("Oroszország","USA", "Kanada","Franciaország")),"Countries") a következő jelölést generálja:
Most vége összetett példa. Soroljunk fel egy gyűjteményt a Book elemekből. A vezérlőben ezt a listát a ViewBagen keresztül továbbítjuk:
BookContext db = new BookContext(); public ActionResult Index() ( SelectList books = new SelectList(db.Könyvek, "Szerző", "Név"); ViewBag.Books = könyvek; return View(); )
Itt létrehozunk egy SelectList objektumot úgy, hogy a konstruktorában átadjuk a lista értékkészletét (db.Books), az értékként használandó Book modell tulajdonság nevét (Author) és a Book model tulajdonság nevét. a listában való megjelenítéshez. Ebben az esetben nem szükséges két különböző tulajdonságot beállítani, az értékhez és a megjelenítéshez is lehetett egyet beállítani.
Ezután a nézetben ezt a SelectList-et így használhatjuk:
@Html.DropDownList("Szerző", ViewBag.Books mint SelectList)
A nézet megjelenítése után az összes SelectList elem hozzáadódik a legördülő listához
Html.ListBox
A Html.ListBox segédprogram, mint a DropDownList, létrehoz egy elemet , de lehetővé teszi az elemek többszörös kiválasztását (vagyis a többszörös attribútum többszörösre van állítva). A többszörös kijelölést támogató lista létrehozásához a SelectList helyett a MultiSelectList osztályt használhatja:
@Html.ListBox("countires", new MultiSelectList(new string ("Oroszország","USA", "Kína","India")))
Ez a kód a következő jelölést generálja:
Egyetlen értékek átvitelével a szerverre minden világos, de hogyan lehet több értéket átvinni? Tegyük fel, hogy a következő űrlapot használjuk:
@using (Html.BeginForm()) ( @Html.ListBox("countries", new MultiSelectList(new string ( "Oroszország", "USA", "Kína", "India" )))
}Ekkor a vezérlő metódusa így kaphatja ezeket az értékeket:
Nyilvános karakterlánc Index(karakterlánc országok) ( string result = ""; foreach (c karakterlánc országokban) ( eredmény += c; eredmény += ";"; ) return "Ön a következőket választotta: " + eredmény; )
Űrlap több gombbal
Egy űrlapon általában csak egy küldés gomb található. Bizonyos helyzetekben azonban szükség lehet egynél több gomb használatára. Például van egy mező az érték megadására, és két gomb jelzi, hogy törölni kell-e ezt az értéket, vagy fordítva, hozzáadni kell:
@using (Html.BeginForm("MyAction", "Home", FormMethod.Post)) (
}
A legegyszerűbb megoldás, ha a name attribútumot minden gombnál ugyanarra az értékre állítjuk be, de a value attribútumot más értékre állítjuk. A formát felvevő módszer pedig így nézhet ki:
Public ActionResult MyAction(karakterlánctermék, karakterlánc művelet) ( if(action=="add") ( ) else if(action=="delete") ( ) // metóduskód többi része )
Egy feltételes konstrukció segítségével pedig a megnyomott gomb érték attribútumának értékét tároló műveleti paraméter értékétől függően bizonyos műveleteket hajtanak végre.