2012-12-04 9 views
5

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

निम्नलिखित कोड पूरी तरह से एक सबमिट बटन का उपयोग कर, वापस चयनित आईडी के पोस्टिंग पहचान-पत्र की एक सरणी के रूप में काम करता है, लेकिन मैं अन्य बटन के साथ एक पृष्ठ पर इस की आवश्यकता है।

// the view 
@foreach (var station in Stations) 
{ 
    <input type="checkbox" name="selected" value="@station.StationId" /> 
}  
<input type="submit" value="Save" /> 

//Controller stub 
public ActionResult Action(string [] selected) 

मैं इस पर घंटों तक फंस गया हूं, इसलिए शायद मैं इसे गलत तरीके से देख रहा हूं।

पी एस। यहां पढ़ने और सीखने के कई घंटों के बाद मेरी पहली पोस्ट।

+2

क्या आप कह रहे हैं, आप एक लिंक पर क्लिक करने और सर्वर पर सामग्री पोस्ट प्राप्त करने में सक्षम होना चाहते हैं? क्या मुझे लगता है कि उन चेकबॉक्स एक रूप में हैं? अजाक्स पोस्ट? – Jack

+0

हां, बस एक लिंक पर क्लिक करें। मैं मेरे विचार में एक फार्म का इस्तेमाल किया है नहीं (यह एक PartialView है), लेकिन एहसास मैं उपयोग कर सकते हैं @ Html.FormBegin() एक दूसरे से बटन प्रस्तुत भेद करने के लिए। मैं अजाक्स या जावास्क्रिप्ट से बहुत परिचित नहीं हूं, यही कारण है कि (मुझे संदेह है) मैं यहां संघर्ष कर रहा हूं। – tr3v

उत्तर

2

की तरह आप AJAX के पद के लिए नहीं देख रहे हैं लगता है। इसका सामना करने का सबसे आसान तरीका यह फ़ॉर्म में लपेटना और सबमिट फ़ंक्शन कॉल करना है। यहां बताया गया है कि आपका कोड कैसा दिखना चाहिए:

@using(Html.BeginForm("uraction", "urcontroller", FormMethod.Post, new { id = "formId" })) { 
    foreach(var station in Stations) { 
     <input type="checkbox" name="selected" value="@station.StationId" /> 
    } 
} 
<a href="#" id="postBtn">Post</a> 
<script> 
    $(document).ready(function() { 
     $('#postBtn').click(function() { 
      $('#formId').submit(); 
     } 
    } 
</script> 
+0

यह (और साथ ही @ AliRıza-Adıyahşi द्वारा पोस्ट) जो मैं चाहता की तरह लग रहा है, लेकिन मैं मौजूदा JavaScript के साथ कोई विरोध है लगता है। मेरा कोड पार्टियल व्यू में है जिसमें क्लाइंटसाइड पेजिंग है और उपरोक्त स्क्रिप्ट में प्रवेश करना मेरे पेजिंग को तोड़ता है। मैं अपनी स्क्रिप्ट प्रबंधित करने के लिए सर्वोत्तम प्रथाओं पर पढ़ूंगा, और शायद एक साधारण पृष्ठ से शुरू करूंगा। – tr3v

+0

यीप, आमतौर पर AJAX पोस्ट के साथ, आप, सर्वर से वापस कुछ फ़ीड प्राप्त तो या तो डेटा को वापस पृष्ठ पर पॉप्युलेट करने के लिए चाहते हैं या एक परिवर्तन किया गया के बारे में उपयोगकर्ता को सूचित। मैं बस अनुमान लगा रहा हूं कि आप डेटा को संसाधित करने की सोच रहे हैं, फिर उपयोगकर्ता को एक अलग पृष्ठ पर रीडायरेक्ट करें। यदि ऐसा है, तो मेरा समाधान अधिक उपयुक्त होगा। – Jack

+0

आपको सही लगता है। मेरे पास ऑब्जेक्ट्स की एक सूची है (पेजेड लेकिन इस चरण में एक समय में केवल एक पेज से निपटना - पिछले पृष्ठों से चयन याद रखने की आवश्यकता नहीं है)। मैं वस्तुओं का चयन करने में सक्षम होना चाहता हूं, फिर चयनित वस्तुओं को संसाधित करने के लिए एक क्रिया को कॉल करें: हटाएं, ध्वज, आदि ... उत्तर देने के लिए धन्यवाद। – tr3v

3

SomeButtons या लिंक्स checkboxlist पोस्ट करने के लिए महत्व देता

<a href="#" id="someButton">Post</a> 
//or buttons, helpers and any elements to trigger ajax post... 

CheckboxList:

<div id="MyDiv"> 
    @foreach (var station in Stations) 
    { 
     <input type="checkbox" name="selected" value="@station.StationId" /> 
    } 
</div> 

स्क्रिप्ट:

$(document).ready(function() { 
    $('#someButton').click(function() { 
     var list = []; 
     $('#MyDiv input:checked').each(function() { 
      list.push(this.name); 
     }); 
     // now names contains all of the names of checked checkboxes 
     // do something with it for excamle post with ajax 
     $.ajax({ 
      url: '@Url.Action("Action","Contoller")', 
      type: 'POST', 
      data: { Parameters: list}, 
      success: function (result) { 
       alert("success")! 
      }, 
      error: function (result) { 
       alert("error!"); 
      } 
     }); //end ajax 
    }); 
}); 

नियंत्रण एर:

public ActionResult Action(string [] Parameters) 

अगर मैं इसे सही :)

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