मैं jQuery 1.9.1 और MVC का उपयोग कर रहा 4.डी-serializing अशक्त में MVC4 कार्रवाई परिणामों में वस्तु को महत्व देता
मैं निम्नलिखित जावास्क्रिप्ट है:
$.ajax({
url: '/Home/doSomething',
type: 'POST',
data: JSON.stringify({ devices: [{ Id: 123, Name: "something", MapName: "map" },{ Id: 321, Name: "a name", MapName: "another map" }] }),
dataType: 'json',
contentType: 'application/json'
}
और निम्नलिखित सी # मेरी HomeController में:
[HttpPost]
public string doSomething(Device[ ] devices)
{
//stuff consuming that array
}
डिवाइस वर्ग इस तरह परिभाषित किया गया है:
[Serializable]
public class Device
{
public long Id;
public string Name;
public string MapName;
}
डीबगर के अनुसार, डिवाइस सरणी एक 2-तत्व सरणी है जिसमें प्रत्येक डिवाइस तत्व के सभी गुण शून्य होते हैं।
क्रोम के अनुसार, पोस्ट डेटा इस तरह दिखता है:
{
"devices": [
{
"Id": 123,
"Name": "something",
"MapName": "map"
},
{
"Id": 321,
"Name": "a name",
"MapName": "another map"
}
]
}
यहाँ क्या गलत है MVC बना रही है नीचे है कि उन वस्तुओं अशक्त हैं अप कसम और, फिर भी अभी भी मुझे का एक उपयुक्त-लंबाई सरणी दे उन्हें?
मैंने JSON.stringify पर कॉल किए बिना सीधे सरणी पोस्ट करने का प्रयास किया है। मैंने किसी ऑब्जेक्ट के अंदर सरणी को "डिवाइस" नामक संपत्ति के रूप में पोस्ट करने का प्रयास किया है, फिर इसे बिना छेड़छाड़ किए। मैंने किसी ऑब्जेक्ट के अंदर सरणी को "डिवाइस" नामक संपत्ति के रूप में पोस्ट करने का प्रयास किया है, जबकि केवल सरणी को स्ट्रिंग कर रहा है।
इन सभी परिणामों में एक रूप या किसी अन्य के बुरे व्यवहार में परिणाम होता है। या तो क्रोम उपयुक्त डेटा को पहले स्थान पर पोस्ट नहीं करता है, या एमवीसी इसे डी-सीरियलाइज नहीं करता है।
मैंने वेब को खराब कर दिया है और ऐसा क्यों नहीं लगता है कि इसे क्यों तोड़ा जाना चाहिए।
संपादित 2013-02-21 13:12 UTC-5:
मैं भी JSON का उपयोग कर और बस jQuery प्रपत्र डेटा के रूप में पोस्ट दे बिना इस कोशिश की है। यहाँ उस के लिए कोड है:
var postData = { devices: [{ Id: 123, Name: "something", MapName: "map" }, { Id: 321, Name: "a name", MapName: "another map" }] };
$.ajax({
url: '/Home/doSomething',
type: 'POST',
data: postData
});
और सी # अभी भी ऊपर के समान है।
व्यवहार अभी भी वही है जब यह JSON था, हालांकि। एमवीसी 2 तत्वों की एक सरणी देखता है, लेकिन उस सरणी में ऑब्जेक्ट्स के सभी मान डिफ़ॉल्ट हैं (स्ट्रिंग के लिए पूर्णांक और शून्य के लिए 0)।
इसके लायक होने के लिए, यह भी विफल रहता है जब मैं इसे JSON के रूप में पोस्ट नहीं करता हूं। मैं JSON का उपयोग करके इस से विवाहित नहीं हूं, लेकिन मुझे पोस्ट डेटा/किसी भी तरह/deserialize करने के लिए एमवीसी की जरूरत है। – dodexahedron