मैं गतिशील रूप से जेनरेट किए गए चेकबॉक्स का एक सेट बांधने की कोशिश कर रहा हूं ताकि उन्हें नियंत्रक कार्रवाई में संसाधित किया जा सके लेकिन मॉडल को बाध्यकारी नहीं मिल सके पाए जाते हैं। यह परिदृश्य है:एएसपी.नेट एमवीसी - मॉडल गतिशील रूप से जेनरेट किए गए चेकबॉक्स का एक सेट बाध्यकारी -
मेरा व्यू मॉडेल क्लास (DocumentAddEditModel) में एक शब्दकोश (शब्दकोश < स्ट्रिंग, बूल>) होता है जिसमें प्रत्येक प्रविष्टि की स्ट्रिंग प्रत्येक चेकबॉक्स के लिए नाम/लेबल होता है और बूलियन इंगित करता है कि चेकबॉक्स चेक किया गया है या नहीं:
public class DocumentsController : Controller
{
[RequiresAuthentication]
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Add()
{
DocumentAddEditModel documentAddEditModel = new DocumentAddEditModel();
...
Dictionary<string, bool> categoryCheckboxes = new Dictionary<string, bool>();
...
string[] categories = Enum.GetNames(typeof(Category));
foreach (string category in categories)
categoryCheckboxes.Add(category, false);
documentAddEditModel.CategoryCheckboxes = categoryCheckboxes;
return View(documentAddEditModel);
}
}
दृश्य मैं चेक बॉक्स उत्पन्न करने के लिए निम्नलिखित है के भीतर
:
public class DocumentAddEditModel
{
...
private Dictionary<string, bool> _categoryCheckboxes = new Dictionary<string,bool>();
...
...
public Dictionary<string, bool> CategoryCheckboxes
{
get { return _categoryCheckboxes; }
set { _categoryCheckboxes = value; }
}
...
}
}
मेरी नियंत्रक कार्रवाई है कि फार्म के लिए GET अनुरोध हैंडल के भीतर इस प्रकार Dictonary भरता है:
<% foreach (KeyValuePair<string, bool> categoryCheckbox in ViewData.Model.CategoryCheckboxes)
{%>
<input class="checkbox" type="checkbox" name="CategoryCheckboxes[0].Key" id="<%= categoryCheckbox.Key %>" />
<label class="categoryLabel" for="<%= categoryCheckbox.Key %>"><%= categoryCheckbox.Key %></label>
<% } %>
लेकिन मुझे लगता है कि यह समस्या है जहां समस्या होनी चाहिए। निश्चित नहीं है कि नाम विशेषता में क्या होना चाहिए। समस्या यह है कि एक बार DocumentsController में निम्नलिखित कार्रवाई पद्धति पर वापस पोस्ट है:
[RequiresAuthentication]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Add(DocumentAddEditModel documentAddEditModel)
{
...
}
documentAddEdit.Model.CategoryCheckboxes हमेशा रिक्त है। मैं इसे कैसे सेट अप करूं ताकि श्रेणी चेकबॉक्स शब्दकोश सही ढंग से नाम के साथ पॉप्युलेट हो और चेकबॉक्स के लिए चेक/अनचेक बूल मान हो?
धन्यवाद
धन्यवाद यूरोपीय संघ और जीई-ne, ऐसा लगता है चाल हालांकि, क्या आप संभवतः यहां स्पष्ट हो सकते हैं कि क्या हो रहा है? मैं समझता हूं कि चूंकि चेकबॉक्स नियंत्रण (<इनपुट प्रकार = "चेकबॉक्स" ...) में 'नाम' विशेषता नहीं है जो नियंत्रण और व्यूमोडेल गुणों के बीच मैपिंग करने के लिए बाध्यकारी उपयोग मॉडल का उपयोग करने के लिए आवश्यक है (?) एक छिपे हुए क्षेत्र क्या ऐसे किसी छिपे हुए क्षेत्र से बचने का कोई तरीका नहीं है जो राज्य को पकड़ता/प्रसारित करता है? मैं बाद में स्पष्ट नहीं हूं कि चेकबॉक्स की वास्तविक/झूठी स्थिति कैसे प्रसारित की जाती है। – Matthew
फिर मुझे एहसास है कि एचटीएमएल।चेकबॉक्स() एचटीएमएलहेपर एक दूसरे छिपे हुए फ़ील्ड को दृश्यमान चेकबॉक्स के बराबर नाम विशेषता के साथ उत्पन्न करता है लेकिन जब मैं चेक किए गए चेकबॉक्स के लिए जेनरेट किए गए एचटीएमएल की तुलना करता हूं: – Matthew
<इनपुट प्रकार = "छुपा" नाम = "श्रेणी चेकबॉक्स [0]। कुंजी "मान =" आलेख "/> <इनपुट आईडी =" श्रेणी चेकबॉक्स [0] _ वैल्यू "नाम =" श्रेणी चेकबॉक्स [0]। वैल्यू "प्रकार =" चेकबॉक्स "मान =" सत्य "/><इनपुट नाम =" श्रेणी चेकबॉक्स [ 0]। वैल्यू "टाइप =" छुपा "मान =" झूठा "/> <लेबल वर्ग =" श्रेणी लेबल "=" आलेख "के लिए> आलेख – Matthew