दिलचस्प पोस्ट
GetView बनाम। कस्टम कंसार एडाप्टर में BindView? लिनक्स में पर्यावरण चर LD_LIBRARY_PATH कैसे सेट करें मूल्य पर नेस्टेड सूची में एक सूची को विभाजित करें क्या केस-स्विच इस तरह काम करता है? मैं PHP में कंसोल को कैसे लिख सकता हूं? आदेश दिया गया दिखेगी बनाम डिफॉल्ट डिक्ट बनाम डिक्ट टेक्स्ट-टू-स्पीच (वॉयस पीढ़ी) और भाषण टू टेक्स्ट (आवाज मान्यता) एपीआई? अच्छी तरह से, स्टड :: अनूठे_पीटआर का कस्टम डिलर कैसे काम करता है? NameError (अनिर्धारित निरंतर पेपरक्लिप :: संग्रहण :: एस 3 :: एडब्ल्यूएस): एक ही आकार के साथ एक छवि के रूप में टर्मिनल के तहत Matlab अदृश्य भूखंड सहेजें घातक त्रुटि को कैसे पकड़ें: अधिकतम 30 सेकंड का निष्पादन समय PHP में पार हो गया टुकड़ों का उपयोग करके वापस ढेर साफ़ करें हमें ग्लूबल और स्थानीय रूप से स्थापित करने की आवश्यकता क्यों है? Std :: regex का उपयोग करते हुए एकाधिक परिणामों का मिलान कैसे करें Django में स्थानीय बनाम उत्पादन सेटिंग्स का प्रबंधन कैसे करें?

कैसे चेक बॉक्स राज्य सहित MVC में नियंत्रक के लिए IEnumerable सूची पारित करने के लिए?

मेरे पास एक एमवीसी अनुप्रयोग है जिसमें मैं एक मॉडल का उपयोग कर रहा हूं:

public class BlockedIPViewModel { public string IP { get; set; } public int ID { get; set; } public bool Checked { get; set; } } 

अब मेरे पास एक ऐसी सूची बांटने के लिए एक दृश्य है:

 @model IEnumerable<OnlineLotto.Web.Models.BlockedIPViewModel> @using (Html.BeginForm()) { @Html.AntiForgeryToken() } @foreach (var item in Model) { <tr> <td> @Html.HiddenFor(x => item.IP) @Html.CheckBoxFor(x => item.Checked) </td> <td> @Html.DisplayFor(modelItem => item.IP) </td> </tr> } <div> <input type="submit" value="Unblock IPs" /> </div> 

अब सबमिट बटन से कार्रवाई करने के लिए मेरे पास एक नियंत्रक है:

  public ActionResult BlockedIPList(IEnumerable<BlockedIPViewModel> lstBlockedIPs) { } 

लेकिन मैं नियंत्रक की कार्रवाई में आने पर lstBlockedIPs के लिए शून्य मान मिल रहा है.मैं यहाँ चेकबॉक्स स्थिति प्राप्त करने की आवश्यकता है। कृपया मदद करे।

Solutions Collecting From Web of "कैसे चेक बॉक्स राज्य सहित MVC में नियंत्रक के लिए IEnumerable सूची पारित करने के लिए?"

इसके बजाय एक सूची का उपयोग करें और लूप के लिए अपने foreach लूप को प्रतिस्थापित करें:

 @model IList<BlockedIPViewModel> @using (Html.BeginForm()) { @Html.AntiForgeryToken() @for (var i = 0; i < Model.Count; i++) { <tr> <td> @Html.HiddenFor(x => x[i].IP) @Html.CheckBoxFor(x => x[i].Checked) </td> <td> @Html.DisplayFor(x => x[i].IP) </td> </tr> } <div> <input type="submit" value="Unblock IPs" /> </div> } 

वैकल्पिक रूप से आप एक संपादक टेम्प्लेट का उपयोग कर सकते हैं:

 @model IEnumerable<BlockedIPViewModel> @using (Html.BeginForm()) { @Html.AntiForgeryToken() @Html.EditorForModel() <div> <input type="submit" value="Unblock IPs" /> </div> } 

और उसके बाद टेम्पलेट को परिभाषित करें ~/Views/Shared/EditorTemplates/BlockedIPViewModel.cshtml जो स्वचालित रूप से संग्रह के प्रत्येक तत्व के लिए प्रदान किया जाएगा:

 @model BlockedIPViewModel <tr> <td> @Html.HiddenFor(x => x.IP) @Html.CheckBoxFor(x => x.Checked) </td> <td> @Html.DisplayFor(x => x.IP) </td> </tr> 

इसका कारण यह है कि आप अपने नियंत्रक में अशक्त हो रहे थे, क्योंकि आपने अपने इनपुट फ़ील्ड के लिए नामकरण सम्मेलन का सम्मान नहीं किया है, क्योंकि डिफ़ॉल्ट मॉडल बाइंडर को सफलतापूर्वक एक सूची में बाँध की उम्मीद है मैं आपको following article को पढ़ने के लिए आमंत्रित करता हूं।

एक बार जब आप इसे पढ़ चुके हैं, तो मेरे उदाहरण और तुम्हारा साथ उत्पन्न HTML (और अधिक विशेष रूप से इनपुट फ़ील्ड के नाम) को देखें फिर तुलना करें और आप समझेंगे कि आपका काम क्यों नहीं करता।