2010-07-08 12 views
7

मेरे पास एक क्रिया है जो पूर्णांक की सूची पर निर्भर करती है। मेरी पहली प्रवृत्ति केवल एक सूची के साथ कार्रवाई घोषित करना था।मैं एक एमवीसी कार्रवाई में पूर्णांक की एक सूची कैसे पास करूं?

public ActionResult EditMultiple(List<int> ids) 

और मेरे देखें कॉल में तो जैसे:

मैं के रूप में नियंत्रक में कार्रवाई की घोषणा की कोशिश की

<%= Html.ActionLink("EditMultiple", "EditMultiple", new { ids = new List<int> {2, 2, 2} })%> 

हालांकि यह संकलित सूची खाली है जब मैं में एक ब्रेकपाइंट डाल कार्रवाई। किसी को पता है कि वैकल्पिक दृष्टिकोण क्यों है या नहीं?

परिदृश्य के बारे में और अधिक विस्तार से जोड़ना:

मैं "संपादित करें" एक ही समय में एक से अधिक संस्थाओं के लिए कोशिश कर रहा हूँ। मैं पहले से ही उस बिंदु पर हूं जहां मेरे पास एक ऐसा एप्लिकेशन है जो मुझे पुस्तकालय में पुस्तकों के बारे में जानकारी बनाने/संपादित करने/देखने की अनुमति देता है। मेरे पास आंशिक दृश्य है जो उपयोगकर्ता को एक पुस्तक के बारे में जानकारी संपादित करने और डेटाबेस में सहेजने की अनुमति देता है।

अब मैं एक ऐसा दृश्य बनाना चाहता हूं जो उपयोगकर्ता को एक ही सबमिट बटन के साथ एकाधिक पुस्तकों के बारे में जानकारी संपादित करने की अनुमति देता है। मैंने एडिटमल्टीप्लियर एक एक्शन बनाया है जो सिर्फ प्रत्येक पुस्तक के लिए आंशिक प्रस्तुत करता है (इस दृश्य के लिए मेरा मॉडल सूची है) और सबमिट बटन को बाद में जोड़ता है।

+0

आप कार्रवाई में क्या पोस्ट कर रहे हैं? –

+0

इस मामले में मेरा उदाहरण मेरे असली परिदृश्य के करीब कुछ हद तक है। यह पोस्ट नहीं है। मैं वास्तविक परिदृश्य के बारे में कुछ और जानकारी के साथ विवरण अद्यतन कर दूंगा। – Justin

उत्तर

4

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

<a href="<%= Url.Action("CreateMultiple")%>?ids=2&ids=1&ids=3">Test link</a> 

Here's the link: तुम कितने तरह लिंक करने के लिए यूआरएल सहायक कार्रवाई का उपयोग कर सकते हैं और संलग्न आईडी।

+0

यह काम करता है। दुख की बात है कि मैं कर सकता हूं एचटीएमएल सहायक का उपयोग नहीं करते हैं लेकिन हार्डकोडेड मान केवल प्रोटोटाइप के लिए हैं, इसलिए यह चाल है। – Justin

2

मुझे लगता है कि

new List<int> {2, 2, 2} 

ठीक से एक पोस्ट है कि bindable है में परिवर्तित हो जाती है, तो आप

Ids=1&Ids=2&Ids=3 

एक अल्पविराम अलग सूची भी काम कर सकते हैं, im यकीन नहीं, मैं डॉन 'नहीं भेजना चाहते है क्रैपी डिफ़ॉल्ट मॉडलबिन्डर का उपयोग नहीं करते हैं।

आप वैसे भी ऐसा क्यों कर रहे हैं? मुझे उम्मीद है कि कुछ और के लिए छद्म कोड ...

+0

अधिक जानकारी प्रश्न में जोड़ा गया। बेशक मैं वास्तव में किताबें संपादित नहीं कर रहा हूं लेकिन इस चर्चा के प्रयोजनों के लिए पर्याप्त है। यदि आप संपादन पुस्तकों के लिए एक क्रिया बनाने की तुलना में एकाधिक पुस्तकों को संपादित करने के बेहतर तरीके के बारे में सोच सकते हैं जो कि प्रत्येक मॉडल के लिए आंशिक रूप से सूची में आंशिक रूप से प्रस्तुत करता है, तो मैं सभी कान हूं। यह मेरा पहला असली एमवीसी ऐप है इसलिए मैं अभी भी ढांचे और डिजाइन पैटर्न सीख रहा हूं। – Justin

+0

इस प्रकार, उन भविष्य के लोगों को ध्यान दें जो पता लगाने की कोशिश कर रहे हैं, जैसा कि मैं था, एमवीसी एक्शन को कैसे सबमिट किया जाए, जहां क्लाइंट प्रोग्रामेटिक रूप से सबमिट कर रहा था (FormUrlEncodedContent के माध्यम से): इसका मतलब है कि सूची में एक ही कुंजी को लूप करें और जोड़ें केवीपी के आप अलग-अलग मानों के साथ, कई बार FormUrlEncodedContent बना रहे हैं (यह केवल एक सूची के बाद है, उचित शब्दकोश नहीं है, इसलिए इसकी अनुमति है (और काम किया!) – neminem

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

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