पर एक int सरणी पास करना मैं जावास्क्रिप्ट से एक एमवीसी नियंत्रक में int की एक सरणी पास करने की कोशिश कर रहा हूं जो 2 मानकों को स्वीकार करता है - एक int सरणी और एक int। यह नियंत्रक कार्रवाई द्वारा लौटाए गए दृश्य में एक पृष्ठ रीडायरेक्ट करने के लिए है।एमवीसी नियंत्रक
var dataArray = getAllIds(); //passes back a JavaScript array
window.location.replace("/" + controllerName + "/EditAll?ids=" + dataArray + "¤tID=" + dataArray[0])
डेटाअरे में मेरे नमूना उपयोग के लिए अपेक्षित 1,7 शामिल हैं।
नियंत्रक कोड
public virtual ActionResult EditAll(int[] ids, int currentID)
{
currentModel = GetID(currentID);
currentVM = Activator.CreateInstance<ViewModel>();
currentVM.DB = DB;
currentVM.Model = currentModel;
currentVM.ViewMode = ViewMode.EditAll;
currentVM.ModelIDs = ids;
if (currentModel == null)
{
return HttpNotFound();
}
return View("Edit", MasterName, currentVM);
}
मुद्दा यह है कि जब पूर्णांक [] आईडी नियंत्रक के लिए पारित किया निरीक्षण, यह मान शून्य है है। currentID को उम्मीद के अनुसार 1 पर सेट किया गया है।
मैंने jQuery.ajaxSettings.traditional = true को सेट करने का प्रयास किया है जिसका कोई प्रभाव नहीं है मैंने जावास्क्रिप्ट में @ Url.Action का उपयोग कर सर्वर साइड यूआरएल बनाने का भी प्रयास किया है। मैंने JSON को भी आजमाया। सरणी को पार करने से पहले स्ट्रिंग करें
window.location.replace("/" + controllerName + "/EditAll?ids=" + JSON.stringify(dataArray) + "¤tID=" + dataArray[0])
फिर आईडी सरणी नियंत्रक पक्ष पर शून्य हो जाती है।
क्या किसी को भी नियंत्रक को सही ढंग से पास करने के लिए int सरणी प्राप्त करने पर कोई संकेतक है? मैं पैरामीटर को कंट्रोलर एक्शन में स्ट्रिंग के रूप में घोषित कर सकता हूं और मैन्युअल रूप से पैरामीटर को क्रमबद्ध और डी-सीरियलाइज कर सकता हूं लेकिन मुझे यह समझने की जरूरत है कि फ्रेम प्रकार को स्वचालित प्रकार के रूपांतरणों को स्वचालित रूप से कैसे किया जाए।
धन्यवाद!
क्या इस तथ्य के आसपास कोई समस्या नहीं है कि आपको सरणी के चारों ओर लूपिंग करके और प्रत्येक तत्व को क्वेरी स्ट्रिंग में जोड़कर लंबी स्ट्रिंग बनाना है? –
आपने टैग किया है कि आप jQuery का उपयोग कर रहे हैं, इसलिए आपको अपने लिए एन्कोडेड मान बनाने के लिए '$ .param' http://api.jquery.com/jQuery.param/ का उपयोग करने में सक्षम होना चाहिए। 'window.location.replace ("/"+ नियंत्रकनाम +"/संपादित करें? "+ $ .param ({आईडी: डेटाअरे, वर्तमान आईडी: डेटाअरे [0]}))' –