2009-04-02 9 views
23

क्या किसी को किसी एमवीसी व्यू के किसी भी उदाहरण या ट्यूटोरियल के बारे में पता है जो माता-पिता/बच्चे डेटा को सभी रूपों में दिखाता है, और सभी बच्चे के रिकॉर्ड संपादन योग्य होने की अनुमति देता है?एएसपी.नेट एमवीसी कई बच्चों के रिकॉर्ड संपादित करने का उदाहरण

उदाहरण के लिए, कहें कि मेरे पास लोगों की एक तालिका है और दूसरा वाहन है। एक ही रूप, मैं किसी दिए गए व्यक्ति के लिए हर वाहन दिखाना चाहता हूं, और गलतियों के मामले में डेटा तत्वों को संपादन योग्य (यानी लाइसेंस प्लेट नंबर, कार रंग इत्यादि) बनाना चाहता हूं। मैं प्रत्येक वाहन के लिए एक अलग संपादन फार्म पर कूदना नहीं चाहता हूं।

अब तक मेरे प्रयासों ने मुझे उस बिंदु पर प्राप्त कर लिया है जहां मैं डेटा प्रदर्शित कर सकता हूं, लेकिन मैं इसे नियंत्रक पर वापस पोस्ट नहीं कर सकता। मैंने समस्या को कम करने की कोशिश की है, जहां तक ​​मैं here कर सकता हूं, लेकिन मुझे अभी भी यह नहीं मिल रहा है, और मुझे लगता है कि एक व्यापक उदाहरण क्रम में हो सकता है। कोई विचार?

उत्तर

27

आप इस तरह कुछ कोशिश कर सकते हैं।

मान लीजिए आप इस वस्तु है:

public class Vehicle 
{ 
    public int VehicleID { get; set; } 
    public string LicencePlate { get; set; } 
    public string Color { get; set; } 
} 

और यह अपने नियंत्रक कार्रवाई है कि आप (जहां प्रपत्र पोस्ट करेंगे) वाहन विवरण को संपादित करने के लिए इस्तेमाल करेंगे है:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult EditVehicles(int Owner, Vehicle[] vehicles) 
{ 
    //manipulate the data, then return back to the list 
    return RedirectToAction("YourAction"); 
} 

फिर

<!--have a form for each person, listing their vehicles--> 
<form action="/EditVehicles" method="post"> 
    <input type="hidden" name="Owner" value="25" /> 
    <input type="hidden" name="Vehicles[0].VehicleID" value="10" /> 
    <input type="text" name="Vehicles[0].LicencePlate" value="111-111" /> 
    <input type="text" name="Vehicles[0].Color" value="Red" /> 
    <input type="hidden" name="Vehicles[1].VehicleID" value="20" /> 
    <input type="text" name="Vehicles[1].LicencePlate" value="222-222" /> 
    <input type="text" name="Vehicles[1].Color" value="Blue" /> 
    <input type="submit" value="Edit" /> 
</form> 

यह DefaultModelBinder में मदद मिलेगी सही ढंग से बाध्य करने के लिए: यदि आप अपने प्रपत्र इस तरह से स्थापित करना चाहिए आपके नियंत्रक में आपके मॉडल के लिए फॉर्म डेटा। इस प्रकार Response.Write(vehicles[1].Color); आपके नियंत्रक पर, "ब्लू" प्रिंट करेगा।

यह एक बहुत ही सरल उदाहरण है, लेकिन मुझे यकीन है कि आपको यह विचार मिल जाएगा। सरणी, सूचियों, संग्रहों, शब्दकोशों के लिए बाध्यकारी रूपों के बारे में अधिक उदाहरणों के लिए, here पर एक नज़र डालें।

+0

धन्यवाद! यह वही है जो मैं खोज रहा था, और हंसेलमैन लेख सही था। – gfrizzle

+0

आपका स्वागत है :) –

+0

यह मेरे काम/URL बनाने के लिए पोस्ट करते समय ठीक काम करता है, लेकिन URL/संपादित URL पर GET करते समय मौजूदा डेटा पर वापस नहीं आता है। मेरे निर्माण और संपादन दोनों पृष्ठ समान आंशिक दृश्य का उपयोग कर रहे हैं, और इसलिए एक ही दृढ़ता से टाइप किए गए मॉडल का उपयोग कर रहे हैं। कोई विचार क्यों? – JMS

0

मुझे लगता है कि आप AJAX पोस्ट का उपयोग करके सबसे अच्छा यह प्राप्त कर सकते हैं, जब भी उपयोगकर्ता सबमिट बटन पर क्लिक करता है, तो आप उस ईवेंट में हुक कर सकते हैं, उन चीजों का JSON सरणी बनाएं जिन्हें आप जारी रखना चाहते हैं और इसे भेजना चाहते हैं ।

पाठ्यक्रम का दूसरा तरीका POST कार्रवाई में "फॉर्मकोलेक्शन" ऑब्जेक्ट से सभी जानकारी प्राप्त करना है। आपको बस सभी चाबियों के माध्यम से डेटा को पार्स करने और फिर इसे संसाधित करने की आवश्यकता है।

संबंधित मुद्दे