2012-11-29 13 views
8

क्या यह एक अजाक्स। एक्शनलिंक (..., ...) को अपडेटेटेटलाइनआईआईडी के बजाय पूरे पृष्ठ को रीफ्रेश करने के लिए संभव है?पूरे पृष्ठ को अजाक्स के साथ अपडेट करना। एक्शनलिंक

मैं एक Ajax.ActionLink का उपयोग कर, क्योंकि क्लासिक Html.ActionLink एक POST पद्धति नहीं है पसंद करते हैं।

मैं कोशिश:

@Ajax.ActionLink("Click me", "MyAction", "MyController", new { value = '1234' }, new AjaxOptions { HttpMethod = "POST", Confirm = "Are you sure ?" }, null) 

लेकिन पेज ताज़ा नहीं है, मैं F5 दबाएँ करना पड़ा।

धन्यवाद।

+0

बस जिज्ञासु, क्या मिलेगा विधि के साथ गलत क्या है? – Dmitry

+2

यह एक अच्छा तरीका नहीं है जैसे कि एक आवेदन में चीजों की स्थिति बदलना (रिकॉर्ड हटाना, सैटस बदलना, ...) जैसे कार्यों को करने के लिए जीईटी विधि का उपयोग करना। यहां मुझे स्थिति बदलने के लिए एक एक्शनलिंक चाहिए, इसलिए मैं क्लासिक html.actionlink का उपयोग नहीं करना चाहता जो GET निष्पादित करता है। – Bronzato

उत्तर

14

आप वास्तव में एमवीसी-जैसे कोड प्राप्त करने के लिए गार्डारवाल द्वारा प्रस्तावित दो विधियों को जोड़ सकते हैं जिन्हें पूरे पृष्ठ को एक div में लपेटने की आवश्यकता नहीं होती है। AjaxOptions की onSuccess संपत्ति को window.location.reload() कॉल ले जाएँ इस तरह वस्तु:

@Ajax.ActionLink("Click me", "MyAction", "MyController", new { value = '1234' }, new AjaxOptions { HttpMethod = "POST", OnSuccess="window.location.reload()" }) 

कोई jQuery शामिल है, सिर्फ एक MVC अजाक्स ActionLink में कुछ सादे पुराने जावास्क्रिप्ट।

+0

था window.location.href = window.location.href का उपयोग करने के लिए; repost चेतावनी से बचने के लिए – stuartd

2

क्या jQuery के भीतर ajax कॉल कर के बारे में? कुछ इस तरह।

<button onclick="SomeFunction()" type="button" >Click me</button> 

और फिर इस तरह jQuery के कुछ में:

function SomeFunction() 
{ 
    var url = '/MyController/MyAction/'; 

    $.ajax({ 
     type: "POST", 
     url: url, 
     data: { value: '1234' }, //if there are any parameters 
     dataType: "html", //or some other type 
     success: function (data) { 
      window.location.reload(true); 
      // or something in that area, maybe with the 'data' 
     }, 
     error: function() { 
     //some derp 
     } 
    }); 

मुझे आशा है कि मैं अपने प्रश्न गलतफहमी नहीं है (और मैं वास्तव में यह ajax.actionlink का उपयोग नहीं कर रहा है एहसास)। ;) सम्मान!

########## संपादित #########

या हो सकता है एक बहुत ही प्राप्त किए गए विचार, updatetargetid के लिए लिंक है कि में अपने पूरे पेज लपेटता कह। कुछ इस तरह:

@Ajax.ActionLink("Click me", "MyAction", "MyController", new { value = '1234' }, new AjaxOptions { HttpMethod = "POST", Confirm = "Are you sure ?", UpdateTargetId = "TheDivToUpdate" }, null) 

और फिर इस div टैग के साथ आपके पृष्ठ की सामग्री लपेट:

<div id="TheDivToUpdate"> 
    //The content of your page 
</div> 

मुझे पता है, नहीं सबसे खूबसूरत समाधान लेकिन शायद यह काम करता है तुम्हारे लिए?

+0

अपने सुझाव, लेकिन मैं jQuery इस समय का उपयोग नहीं करना चाहते हैं के लिए धन्यवाद। मैं समाधान की तरह एक और 'एमवीसी' पसंद करते हैं। – Bronzato

+0

aaa ठीक है, मैंने अपना जवाब संपादित किया है, बस अगर यह बदलेगा तो काम करेगा :) – gardarvalur

+0

पुनः लोड का उपयोग करके, मुझे निम्न संदेश मिलता है "वेबपृष्ठ को फिर से प्रदर्शित करने के लिए वेब ब्राउज़र को आपके द्वारा पहले की गई जानकारी को फिर से भेजने की आवश्यकता है" – usefulBee

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