सावधानी: यह सवाल नौ साल से अधिक पुराना है!
आपका सबसे अच्छा विकल्प नए प्रश्नों की खोज करना है, या एमवीसी के अपने विशिष्ट संस्करण की तलाश में नीचे दिए गए उत्तरों की खोज करना है, क्योंकि यहां कई उत्तर अप्रचलित हैं।
यदि आपको कोई उत्तर मिलता है जो आपके संस्करण के लिए काम करता है, तो कृपया सुनिश्चित करें कि उत्तर में आपके द्वारा उपयोग किए जा रहे MVC का संस्करण है।
(मूल प्रश्न नीचे शुरू होता है)
यह मुझे थोड़ा विचित्र लगता है, लेकिन जहां तक मैं बता सकता हूं, यह है कि आप इसे कैसे करते हैं।
मेरे पास वस्तुओं का एक संग्रह है, और मैं चाहता हूं कि उपयोगकर्ता उनमें से एक या अधिक का चयन करें। यह मेरे लिए "चेकबॉक्स के साथ फ़ॉर्म" कहता है। मेरी वस्तुओं में "चयनित" की कोई अवधारणा नहीं है (वे एक wcf कॉल deserializing द्वारा POCO का गठन किया है)। तो, मैं निम्नलिखित कार्य करता हूं:
public class SampleObject{
public Guid Id {get;set;}
public string Name {get;set;}
}
दृश्य में:
<%
using (Html.BeginForm())
{
%>
<%foreach (var o in ViewData.Model) {%>
<%=Html.CheckBox(o.Id)%> <%= o.Name %>
<%}%>
<input type="submit" value="Submit" />
<%}%>
और, नियंत्रक में, यह एकमात्र तरीका है जिससे मैं यह पता लगा सकता हूं कि उपयोगकर्ता ने किन वस्तुओं की जाँच की:
public ActionResult ThisLooksWeird(FormCollection result)
{
var winnars = from x in result.AllKeys
where result[x] != "false"
select x;
// yadda
}
पहली जगह में इसकी अजीब, और दूसरी बात, उपयोगकर्ता द्वारा जाँच की गई उन वस्तुओं के लिए, FormCollection केवल सही के बजाय "सही गलत" के रूप में इसके मूल्य को सूचीबद्ध करता है।
जाहिर है, मुझे कुछ याद आ रहा है। मुझे लगता है कि यह इस विचार को ध्यान में रखकर बनाया गया है कि संग्रह में जिन वस्तुओं पर html फॉर्म में काम किया जाता है वे UpdateModel()
किसी मॉडलबिंडर के माध्यम से या उसके माध्यम से अपडेट की जाती हैं ।
लेकिन इसके लिए मेरी वस्तुओं की स्थापना नहीं की गई है; क्या इसका मतलब यह है कि यह एकमात्र तरीका है? क्या इसे करने का एक और तरीका है?