2010-06-03 19 views
5

मेरे पास डेटा आइटम्स की कुछ पंक्तियों वाली एक तालिका है। प्रत्येक पंक्ति के लिए यह कुछ एक्शनलिंक होंगे जो कुछ विधियों को कॉल करेंगे (डेटाटाइम हटाएं, स्टेटस डेटािटैम इत्यादि बदलें ...)mvc ajax.actionlink jquery संवाद के साथ पुष्टि

प्रत्येक उपयोगकर्ता बटन पर क्लिक करने से पहले मुझे एक jquery संवाद दिखाना चाहिए और उपयोगकर्ता को एक संवाद देना होगा कुछ जानकारी, ठीक है और रद्द करें बटन।

ajax.actionlink कि ChangeStatus विधि कॉल करेंगे के कुछ उदाहरण कोड:

function StartChangeStatus(e) { 
      $('#dialog-confirm').dialog({ 
       resizable: false, 
       height: 200, 
       modal: true, 
       buttons: { 
        'Continue': function() { 
         $(this).dialog('close'); 
         $('#Loading-Div').show('slow'); 
        }, 
        Cancel: function() { 
         $(this).dialog('close'); 
         e.preventDefault(); 
        } 
       } 
      }); 
     } 

actionlink और jQuery कार्यों काम:

<%= Ajax.ActionLink(item.Status, "ChangeStatus", new { id = item.Id }, new AjaxOptions { UpdateTargetId = "ListReturns-Div", OnBegin = "StartChangeStatus", OnSuccess = "EndChangeStatus", OnFailure = "FailureChangeStatus" }, new { @class = "StatusBtn" })%> 

यह jQuery समारोह है कि कहा जाता है। लेकिन समस्या यह है कि जब एक्शनलिंक क्लिक किया जाता है तो मैं वर्तमान कार्रवाई को रोक/रोक नहीं सकता। जब बटन क्लिक किया जाता है तो अब छेद प्रक्रिया चल रही है और संवाद पुष्टिकरण बटन को अनदेखा कर दिया जाता है। तो मेरा सवाल यह है कि आगे बढ़ने से पहले एक संवाद पुष्टि के साथ एक्शनलिंक या jquery फ़ंक्शन को काम करने के तरीके को कैसे बदला जाए?

+0

यदि आपको कभी भी इनपुट प्रकार के लिए एक पुष्टिकरण संवाद की आवश्यकता होगी: सबमिट करें, आप यहां से एक का उपयोग कर सकते हैं http://awesome.codeplex.com/ – Omu

उत्तर

4

मैंने आपके कोड को भी वही व्यवहार करने का प्रयास किया है। मैंने पुष्टि कोड प्रदर्शित करने के लिए अपना कोड संशोधित किया है।

<%= Ajax.ActionLink("Link", 
        "ChangeStatus", 
        new { id = 3 }, 
        new AjaxOptions { UpdateTargetId = "ListReturns-Div", 
             HttpMethod = "Post", 
             Confirm = "confirmClick" }, 
             new { @class = "StatusBtn" } 
        ) 
%> 

और यह जावास्क्रिप्ट पुष्टिकरण प्रदर्शित कर रहा है। कारण यह नहीं ढूंढना चाहिए कि यह क्यों काम नहीं कर रहा है।

+0

यह मेरे लिए काम करता है धन्यवाद :) –

+0

कूल ... यह मेरे लिये कार्य करता है। – BeemerGuy

+0

इतना आसान, चुना गया उत्तर होना चाहिए – jonprasetyo

2

my website से:

अब, Ajax.ActionLink वास्तव में उपयोगी अभी भी, जो इन दिनों उन भद्दा JavaScript सतर्क करना चाहता है, और ... की पुष्टि AjaxOption भी अधिक है? मैं एमएस एमवीसी 2 के साथ एक एप्लीकेशन विकसित कर रहा हूं और मैं अपने सभी तत्वों के दृश्यों को अनुकूलित करने के लिए शानदार JQueryUI लाइब्रेरी का उपयोग कर रहा हूं। JQueryUI की सबसे अच्छी चीजों में से एक, संवाद विंडो हैं ... जैसे "क्या आप इस फ़ाइल को हटाना चाहते हैं? हाँ/नहीं" ... और मैं उन्हें अपने अजाक्स में उपयोग करना चाहता हूं। एक्शनलिंक!

चूंकि मुझे नेट पर कोई जवाब नहीं मिला, इसलिए मैंने इसे करने का एक आसान तरीका ढूंढ लिया ... और अब मैं इसे यहां पोस्ट करता हूं।

पहले: पढ़ सकते हैं और अपने पृष्ठ पर लागू अच्छा ट्यूटोरियल रिकार्डो Covo द्वारा लिखित: "एएसपी MVC हटाएँ अजाक्स & jQuery यूआई संवाद के साथ पुष्टि" (बस इसे गूगल)

मैं उसकी जावास्क्रिप्ट कोड के लिए सरल परिवर्तन किए, बस छुपाएं ('तेज़') के बजाय निकालें() का उपयोग करके और हटाए जाने के लिए tr "class" को लागू करने के लिए।

deleteLinkObj.closest("tr").hide('fast') 

deleteLinkObj.closest("tr.item").remove(); 

हो जाता है अब, आप पिछले ट्यूटोरियल का पालन करने के बाद, आप

<%:Ajax.ActionLink([LinkName],[ActionName],[ControllerName],new { id = item.Id },new AjaxOptions{HttpMethod = "Delete" /*You can use Post though*/,OnBegin = "JsonDeleteFile_OnBegin" /*This is the main point!*/}, new { @class = "delete-link" }) %> 

आप उपयोग कर सकते हैं के साथ

<%: Html.ActionLink([LinkName],[ActionName], new { id = item.Id }, new { @class = "delete-link" })%> 

पंक्ति विकल्प के लिए तैयार हैं अगर आपको टी पसंद है तो पोस्ट विधि

<script language="javascript">function JsonDeleteFile_OnBegin(context) {return false;/*Prevent the Ajax.Action to fire before needed*/}</script> 

प्लेस पृष्ठ पर जावास्क्रिप्ट: ओ, यहाँ महत्वपूर्ण बात यह है OnBegin विकल्प, कि एक जावास्क्रिप्ट कि रोकता सर्वर कार्रवाई से पहले jQueryUI संवाद पुष्टिकरण कहा जा करने के लिए कॉल है।

तो, अब क्या होगा: जब आप हटाएं बटन पर क्लिक करते हैं, तो यह ऑनबिजिन फ़ंक्शन (जो सामान्य पोस्ट एक्शन रद्द करता है) को कॉल करते समय JQueryUI खोल देगा। "पुष्टि करें" के मामले में, रिकार्डो कोवो का कोड सर्वर साइड एक्शन को फायर करेगा, और रिकार्डो कोवो के जावास्क्रिप्ट कोड की पुष्टि में आप सफलता के मामले में सभी कार्रवाइयों को निष्पादित करने में सक्षम होंगे (जैसे पंक्ति को छिपाने की तरह)।

वेतन ध्यान: इस विधि के साथ, आप समारोह की सफलता के लिए/का प्रबंधन करना चाहिए रिकार्डो Covo का जावास्क्रिप्ट कोड में विफल रहते हैं, के बाद से onSuccess और OnComplete AjaxOptions सब (शायद कुछ कोड द्वारा ओवरराइट) पर गोलियां चलानी नहीं किया जाएगा।

+0

क्यों -1? मुझे लगता है कि यह एक उपयोगी उत्तर है और आज मेरे लिए आकर्षण की तरह काम करता है (एमवीसी 3 के माइग्रेशन के बाद भी)। – fgpx78

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