2010-02-23 13 views
9

मैं एक उपसर्ग का उपयोग करके एक संग्रह बाध्य करने के लिए चाहते हैं के साथ एक संग्रह बाइंडिंग, तोASP.NET MVC मॉडल एक उपसर्ग

public ActionResult Whatever([Bind(Prefix = "Prefix")] CustomModel[] models) 

जैसे मैं जो की तरह एचटीएमएल आदानों उत्पन्न

<%= Html.TextBox("Prefix.models[" + i + "].Property") %> 

का उपयोग कर प्रपत्र तत्वों बनाया यह

<input id="Prefix_models[0]_Property" name="Prefix.models[0].Property" /> 

मेरी समस्या यह है कि डिफ़ॉल्ट मॉडल बाइंडर उपसर्ग से बंधे नहीं होगा। मैं कार्रवाई विधि में मॉडल तर्क के लिए शून्य मिलता है।

यदि मैं एचटीएमएल से उपसर्ग को पट्टी करता हूं और बाइंड विशेषता को हटा देता हूं, तो सब कुछ ठीक काम करता है। मैं कल्पना नहीं कर सकता कि डिफ़ॉल्ट मॉडल बाइंडर संग्रह पर उपसर्ग को संभाल नहीं पाएगा, इसलिए मुझे कुछ गलत करना होगा।

कृपया मदद करें। चीयर्स!

उत्तर

10

[बाइंड] के अंदर उपसर्ग पैरामीटर नाम के लिए पूर्ववत नहीं है, यह पैरामीटर नाम को पूरी तरह से बदल देता है। इसलिए यदि आपके कार्रवाई विधि इस हस्ताक्षर है:

public ActionResult MyAction([Bind(Prefix = "foo")] string[] bar) { ... } 

बांधने की मशीन की उम्मीद foo[0], foo[1], आदि

+0

DOH! संघर्ष के दिन। मेरे सिर को सीधे सेट करने के लिए धन्यवाद! – spot

1

UpdateModel() और TryUpdateModel() उपसर्ग के लिए पैरामीटर लेते हैं। क्या आपने कोशिश की है?