عائلة استمارةيسترجع قيم عناصر النموذج المرسلة في نص طلب HTTP باستخدام نموذج يستخدم طريقة POST.
بناء الجملة
نموذج طلب(عنصر) [(فِهرِس) |.عدد]
خيارات
عنصر
اسم عنصر النموذج الذي تسترد منه العائلة القيم.
فِهرِس
معلمة اختيارية تسمح بالوصول إلى واحدة من عدة قيم للمعلمات. يمكن أن يكون أي عدد صحيح بين -1 و نموذج طلب(معامل).عدد.
ملحوظات
عائلة استمارةمفهرسة بأسماء المعلمات في نص الطلب. معنى نموذج طلب(عنصر) هي مصفوفة من جميع القيم عنصر،التي تظهر في نص الطلب. يمكنك تحديد عدد قيم المعلمات عن طريق الاتصال نموذج طلب(عنصر).عدد. إذا لم يكن للمعلمة قيم متعددة مرتبطة بها ، يكون العداد هو 1. إذا لم يتم العثور على المعلمة ، يكون العداد 0.
للإشارة إلى قيمة واحدة لعنصر نموذج لها قيم متعددة ، يجب عليك تحديد قيمة لـ فِهرِس. معامل فِهرِسيمكن أن يكون أي رقم بين 1 و 1 نموذج طلب(عنصر).عدد. إذا تمت الإشارة إلى أحد معلمات النموذج بدون قيمة فِهرِس، يتم إرجاع البيانات كسلسلة مفصولة بفواصل.
متى نموذج طلبباستخدام المعلمات ، يوزع خادم الويب جسم طلب HTTP ويعيد البيانات المحددة. إذا كان التطبيق الخاص بك يتطلب بيانات غير محللة من نموذج ، فيمكنك الوصول إليه عن طريق الاتصال نموذج طلببدون معلمات.
ملحوظة. عند العمل مع ASP وإرسال كميات كبيرة من البيانات تتجاوز 100 كيلو بايت ، الطريقة نموذج طلبلا يمكن استخدامه. إذا احتاج تطبيقك إلى إرسال بيانات تتجاوز هذا الحد ، فيمكنك إنشاء وحدة برامج تستخدم الامتداد طلب BinaryRead.
من الممكن تكرار جميع قيم البيانات في طلب نموذج. على سبيل المثال ، إذا قام المستخدم بملء نموذج عن طريق توفير قيمتين ، شوكولاتة و باترسكوتش ، لعنصر فافوريتفلافور ، يمكنك استخراج هذه القيم باستخدام البرنامج النصي أدناه.
بالنسبة إلى i = 1 للطلب. النموذج ("النكهة المفضلة")
Response.Write Request.Form ("FavoritesFlavor") (i) & "
"
سيعرض البرنامج النصي أعلاه المعلومات التالية.
يمكنك استخدام هذه التقنية لعرض اسم المعلمة ، كما هو موضح في البرنامج النصي أدناه.
بالنسبة إلى i = 1 إلى Request.Form ("FavouriteFlavor"). count٪>
Request.Form (FavouriteFlavor) =<%= Request.Form("FavoriteFlavor")(i)_
%>
سيعرض هذا البرنامج النصي ما يلي في المستعرض:
Request.Form (FavouriteFlavor) = شوكولاتة
Request.Form (FavouriteFlavor) = باترسكوتش
مثال
ضع في اعتبارك الشكل التالي:
يوضح الشكل كيف ستبدو هذه الصفحة البسيطة في نافذة متصفح الويب:
عندما ينقر المستخدم فوق الزر "إرسال" ، يقوم المستعرض باسترداد القيم الحالية لكل عنصر تحكم ويشكل سلسلة طويلة منها. ثم يتم إرسال هذه السلسلة إلى الصفحة المحددة في المقبض
آخر تحديث: 31.10.2015
على الرغم من أنه يمكننا كتابة أي مساعد مطلوب بأنفسنا ، فإن إطار عمل MVC يوفر بالفعل مجموعة كبيرة من مساعدي html المدمجين الذين يسمحون لنا بإنشاء هذا الترميز أو ذاك ، بشكل أساسي للعمل مع النماذج. لذلك ، في معظم الحالات ، لن تضطر إلى إنشاء مساعدين خاصين بك ، ويمكنك استخدام المساعدين المدمجين.
Html.BeginForm المساعد
يمكننا استخدام عناصر html القياسية لإنشاء نماذج ، على سبيل المثال:
هذا نموذج html بسيط يرسل جميع البيانات المدخلة عند النقر على الزر. طلب POSTإلى / الصفحة الرئيسية / شراء. يسمح لك مساعد BeginForm / EndForm المدمج بإنشاء نفس النموذج:
أدخل أسمك |
|
أدخل العنوان: |
|
تأخذ طريقة BeginForm كمعلمات اسم طريقة الإجراء واسم وحدة التحكم ، بالإضافة إلى نوع الطلب. يتم إنشاء هذا المساعد كعلامة بداية
. لذلك ، عند تقديم العرض إلى تدفق الإخراج ، سنحصل على نفس كود html كما هو الحال مع علامة النموذج. لذلك ، كلا الطريقتين متطابقتان.هناك نقطة واحدة هنا. إذا كان لدينا إصداران من نفس الطريقة المحددة في وحدة التحكم - لطريقتي POST و GET ، على سبيل المثال:
Public ActionResult Buy () (Return View () ؛) سلسلة عامة Buy (Buy Buy) (.............. قم بإرجاع "شكرًا لك على شراء الكتاب" ؛؛)
وهذا يعني ، في الواقع ، أن استدعاء الصفحة مع النموذج وإرسال النموذج يتم تنفيذه من خلال إجراء الشراء نفسه. في هذه الحالة ، من الممكن عدم تحديد معلمات في مساعد Html.BeginForm:
@ using (Html.BeginForm ()) (.............)
إدخال المعلومات
استخدم المثال السابق عناصر html قياسية مع مساعد Html.BeginForm. ومع ذلك ، تحتوي مجموعة مساعد html أيضًا على مساعدين لإدخال المستخدم. يحدد MVC نطاقًا واسعًا من مساعدي الإدخال لكل عنصر html تقريبًا. ماذا تختار - مساعد أو عناصر إدخال HTML قياسية ، يقرر المطور نفسه.
بغض النظر عن النوع ، يستخدم جميع مساعدي html الأساسيين معلمتين على الأقل: يتم استخدام المعلمة الأولى لتعيين قيم سمات المعرف والاسم ، ويتم استخدام المعلمة الثانية لتعيين قيمة سمة القيمة
Html
ينشئ مساعد Html.TextBox علامة إدخال مع قيمة سمة النوع للنص. يتم استخدام مساعد TextBox لتلقي مدخلات المستخدم. لذلك ، دعنا نعيد كتابة النموذج السابق مع استبدال حقول الإدخال بـ Html.TextBox المساعد:
@ using (Html.BeginForm ("Buy"، "Home"، FormMethod.Post)) (
أدخل أسمك:
@ Html.TextBox ("الشخص"، "أدخل الاسم")أدخل العنوان:
@ Html.TextBox ("العنوان"، "أدخل عنوانًا") }سوف نحصل على نفس النتيجة:
Html. منطقة نصية
يتم استخدام مساعد TextArea لإنشاء عنصر
سيكون هناك ترميز html التالي:
يرجى ملاحظة أن المساعد يفك تشفير القيمة الموضوعة فيه ، بما في ذلك علامات html (جميع المساعدين يفك تشفير قيم النموذج وقيم السمات). تسمح لك الإصدارات الأخرى من مساعد TextArea بتحديد عدد الصفوف والأعمدة التي تحدد حجم حقل النص.
@ Html.TextArea ("text"، "مرحبًا
العالم "، 5 ، 50 ، خالية)
سيُنشئ هذا المساعد الترميز التالي:
Html. مخفي
في مثال النموذج ، استخدمنا نوع إدخال الحقل المخفي = "hidden" ، بدلاً من استخدام مساعد Html.Hidden بدلاً من ذلك. إذن ، اتصال المساعد التالي:
@ Html.Hidden ("BookId"، "2")
إنشاء الترميز:
وعند تمرير متغير من ViewBag ، نحتاج إلى تحويله إلى نوع السلسلة: @ Html.Hidden ("BookId"، @ ViewBag.BookId كسلسلة)
أتش تي أم أل
يقوم Html.Password بإنشاء حقل لإدخال كلمة المرور. إنه مشابه لمساعد TextBox ، لكنه يعرض قناع كلمة المرور بدلاً من الأحرف التي تم إدخالها. الكود التالي:
@ Html.Password ("UserPassword"، "val")
يولد الترميز:
Html.RadioButton
يتم استخدام مساعد Html.RadioButton لإنشاء أزرار اختيار. يقوم بإنشاء عنصر إدخال مع نوع القيمة = "راديو". لإنشاء مجموعة من أزرار الاختيار ، تحتاج إلى تعيين نفس الاسم لكل منهم (خاصية الاسم):
@ Html.RadioButton ("color"، "red") أحمر
@ Html.RadioButton ("color"، "blue") أزرق
@ Html.RadioButton ("color"، "green"، true) أخضر
ينشئ هذا الرمز الترميز التالي:
أحمر
أزرق
أخضر
Html.CheckBox
يمكن استخدام Html.CheckBox لإنشاء عنصرين في وقت واحد. خذ ، على سبيل المثال ، الكود التالي:
@ Html.CheckBox ("تمكين" ، خطأ)
سيُنشئ هذا التعبير HTML التالي:
أي ، بالإضافة إلى مربع الاختيار نفسه ، يتم أيضًا إنشاء حقل مخفي. لماذا هو مطلوب؟ النقطة المهمة هي أن المتصفح يرسل قيمة مربع الاختيار فقط عند تحديد خانة الاختيار أو تحديدها. ويضمن الحقل المخفي تعيين عنصر التمكين على قيمة حتى إذا لم يقم المستخدم بتحديد المربع.
أتش تي أم أل
ينشئ مساعد Html.Label عنصرًا ، والمعلمة التي تم تمريرها إلى المساعد تحدد قيمة السمة for وفي نفس الوقت النص الموجود على العنصر. يسمح لك الإصدار الزائد من المساعد بتعريف قيمة السمة من أجل والنص الموجود على الملصق بشكل مستقل عن بعضهما البعض. على سبيل المثال ، ينتج عن تعريف مساعد Html.Label ("الاسم") الترميز التالي:
يمثل عنصر التسمية تسمية بسيطة لإرفاق المعلومات بعناصر الإدخال ، مثل الحقول النصية. يجب أن تحتوي السمة لـ لعنصر التسمية على معرف عنصر الإدخال المرتبط. عندما ينقر المستخدم على ملصق ، ينقل المتصفح تلقائيًا التركيز إلى عنصر الإدخال المرتبط بهذا التصنيف.
Html.DropDownList
ينشئ مساعد Html.DropDownList قائمة منسدلة ، أي عنصر . لإنشاء مثل هذه القائمة ، تحتاج إلى مجموعة من كائنات SelectListItem التي تمثل عناصر القائمة. يحتوي الكائن SelectListItem على خصائص نص (النص المراد عرضه) وقيمة (القيمة نفسها ، والتي قد لا تكون مماثلة للنص) ومحددة. يمكنك إنشاء مجموعة من كائنات SelectListItem أو استخدام مساعد SelectList. يبحث هذا المساعد في كائنات IEnumerable ويحولها إلى سلسلة من كائنات SelectListItem. على سبيل المثال ، @ Html.DropDownList ("countires" ، قائمة SelectList الجديدة (سلسلة جديدة ("Russia" ، "USA" ، "Canada" ، "France")) ، "Countries") تنشئ الترميز التالي:
الآن انتهت مثال معقد. دعنا نسرد مجموعة من عناصر الكتاب. في وحدة التحكم ، سنقوم بتمرير هذه القائمة من خلال ViewBag:
BookContext db = new BookContext ()؛ Public ActionResult Index () (SelectList books = new SelectList (db.Books، "Author"، "Name")؛ ViewBag.Books = books؛ return View ()؛)
هنا نقوم بإنشاء كائن SelectList عن طريق تمرير مجموعة القيم للقائمة (db.Books) في مُنشئها ، واسم خاصية نموذج الكتاب لاستخدامها كقيمة (المؤلف) ، واسم خاصية نموذج الكتاب لاستخدامها في العرض في القائمة. في هذه الحالة ، ليس من الضروري تعيين خاصيتين مختلفتين ، كان من الممكن تعيين واحدة لكل من القيمة والعرض.
ثم في طريقة العرض يمكننا استخدام قائمة التحديد هذه على النحو التالي:
@ Html.DropDownList ("المؤلف" ، ViewBag.Books as SelectList)
وعندما يتم تقديم العرض ، ستتم إضافة جميع عناصر SelectList إلى القائمة المنسدلة
Html.ListBox
يقوم مساعد Html.ListBox ، مثل DropDownList ، بإنشاء عنصر ، ولكنه يسمح بالاختيار المتعدد للعناصر (أي ، يتم تعيين السمة المتعددة على عدة). لإنشاء قائمة تدعم التحديد المتعدد ، بدلاً من SelectList ، يمكنك استخدام فئة MultiSelectList:
@ Html.ListBox ("countires"، قائمة MultiSelectList الجديدة (سلسلة جديدة ("Russia"، "USA"، "China"، "India")))
ينشئ هذا الرمز الترميز التالي:
مع نقل القيم الفردية إلى الخادم ، كل شيء واضح ، ولكن كيف يمكن نقل قيم متعددة؟ لنفترض أن لدينا النموذج التالي:
@ using (Html.BeginForm ()) (@ Html.ListBox ("countries"، new MultiSelectList (سلسلة جديدة ("Russia"، "USA"، "China"، "India")))
}ثم يمكن أن تتلقى طريقة وحدة التحكم هذه القيم كما يلي:
فهرس السلسلة العامة (سلسلة البلدان) (نتيجة السلسلة = "" ؛ foreach (سلسلة c في البلدان) (نتيجة + = c ؛ نتيجة + = "؛" ؛) إرجاع "لقد اخترت:" + نتيجة ؛)
شكل بأزرار متعددة
عادةً ما يكون هناك زر إرسال واحد فقط في النموذج. ومع ذلك ، في بعض المواقف قد يكون من الضروري استخدام أكثر من زر. على سبيل المثال ، يوجد حقل لإدخال قيمة ، ويشير زران إلى ما إذا كان يجب حذف هذه القيمة أو ، على العكس من ذلك ، إضافتها:
@ using (Html.BeginForm ("MyAction"، "Home"، FormMethod.Post)) (
}
أبسط حل هو تعيين سمة الاسم على نفس القيمة لكل زر ، ولكن قم بتعيين سمة القيمة على قيمة مختلفة. والطريقة التي تأخذ الشكل قد تبدو كالتالي:
Public ActionResult MyAction (سلسلة منتج ، إجراء سلسلة) (if (action == "add") () else if (action == "delete") () // rest of method code)
وبمساعدة البناء الشرطي ، اعتمادًا على قيمة معلمة الإجراء ، التي تخزن قيمة سمة القيمة للزر المضغوط ، يتم تنفيذ إجراءات معينة.