जब मैं इस तरह jQuery के साथ पूर्णांक के की एक सूची भेज:कैसे ASP.net MVC डिफ़ॉल्ट मॉडल बाइंडर के लिए jQuery के साथ पूर्णांक की एक सूची भेजने के लिए
$.ajax('@Url.Action("Execute")', {
type: 'POST',
data: {
pkList: [1,2,3]
}
});
फिर jQuery pkList वस्तु को बदलने और द्वारा भेज देंगे इस तरह पोस्ट: यदि सर्वर PHP है
pkList[]:1
pkList[]:2
pkList[]:3
कौन सा ठीक होगा, लेकिन मैं Asp.NET MVC3 का उपयोग करें और डिफ़ॉल्ट मॉडल बांधने की मशीन के साथ इन मूल्यों को प्राप्त करने की कोशिश:
public ActionResult Execute(ICollection<int> pkList)
लेकिन पीकेलिस्ट हमेशा शून्य है, ऐसा लगता है कि डिफ़ॉल्ट मॉडल बाइंडर इसे बांध नहीं सकता है।
मैं इसे सही तरीके से कैसे हल करूं?
जोड़ासमाधान
मैं jQuery में traditional
विकल्प सेट करने के साथ डैरिन दिमित्रोव से समाधान का प्रयोग किया:
$.ajax('@Url.Action("Execute")', {
type: 'POST',
traditional: true,
data: {
pkList: [1,2,3]
}
});
अब jQuery मापदंडों के []
नहीं जोड़ता है अब और उन्हें इस तरह भेजा जाता है:
pkList:1
pkList:2
pkList:3
और एमवीसी डिफ़ॉल्ट मॉडल बाइंडर मानों को सही तरीके से प्राप्त करता है।
उम्मीद है कि यह किसी की मदद करेगा।
डिफ़ॉल्ट मॉडल बांधने की मशीन भी संभाल नहीं होगा के बारे में अधिक था कॉमा एन्कोडेड डेटा के रूप में अलग-अलग सूचियों को भी सूचीबद्ध करता है? कुछ डेटा की तरह: {pkList: '1,2,3'} '? लेकिन अन्यथा मैं अपने सभी मॉडल क्रमिकरण के लिए इस विधि का उपयोग करता हूं, जेएस में अधिक जटिल वस्तुओं के लिए जाने का तरीका। –
@PaulT।, नहीं, डिफ़ॉल्ट मॉडल बाइंडर 'डेटा स्वीकार नहीं करेगा: {pkList:' 1,2,3 '} '। यदि आप ऐसे अनुरोधों को संभालना चाहते हैं तो एक कस्टम मॉडल बाइंडर आवश्यक होगा जहां आपको प्रविष्टियों को विभाजित करने की आवश्यकता होगी और फिर प्रत्येक को एक पूर्णांक पर वापस पार्स करना होगा।यदि लक्ष्य नियंत्रक कार्रवाई में पूर्णांक की सरणी भेजना है तो इस दर्द से गुजरना आवश्यक नहीं होगा। –
आह हाँ, मैं देखता हूं कि अब आपका क्या मतलब है, बस इसका परीक्षण किया गया है, हालांकि यह अजीब है क्योंकि यदि आपके पास एक ही नाम के साथ दो इनपुट हैं तो यह वास्तव में एक सूची में deserialize है, बस पोस्ट डेटा बनाने के लिए jQuery के serialization उस संभाल नहीं है (यानी । pkList = 1 और pkList = 2 काम करता है) –