2013-07-19 8 views
10

के बाद रीफ्रेशिंग नहीं देखें मेरे पास एक इमेजलिंक के साथ एक ग्रिड (इन्फ्राजिस्टिक्स JQuery ग्रिड) के साथ एक दृश्य (index.cshtml) है। एक उपयोगकर्ता के लिए इस लिंक पर क्लिक करता है निम्नलिखित jQuery फ़ंक्शन कॉल किया जाएगा:AJAX पोस्ट

function ConfirmSettingEnddateRemarkToYesterday(remarkID) { 

    //Some code... 

    //Call to action. 
$.post("Home/SetEnddateRemarkToYesterday", { remarkID: remarkID }, function (result) { 
    //alert('Succes: ' + remarkID); 
    //window.location.reload(); 
    //$('#remarksgrid').html(result); 
}); 

} 

बाहर टिप्पणी की आप खुद के लिए एक अलर्ट दिखाई और देखने को ताज़ा करने के 2 प्रयत्न कर सकते हैं। Location.reload() काम करता है, लेकिन मूल रूप से ब्राउज़र के लिए बहुत अधिक काम है। .html (परिणाम) पूरी अनुक्रमणिका.cshtml + layout.cshtml को पोस्टस्ग्रिड div में डबल करता है। तो यह सही नहीं है।

 public ActionResult SetEnddateRemarkToYesterday(int remarkID) { 

     //Some logic to persist the change to DB. 

     return RedirectToAction("Index"); 
    } 

यह क्रिया को रीडायरेक्ट है:

यह क्रिया यह कहता है (SetEnddateRemarkToYesterday) है

[HttpGet] 
public ActionResult Index() { 
    //Some code to retrieve updated remarks. 
    //Remarks is pseudo for List<Of Remark> 
    return View(Remarks); 

} 

मैं succesfull के बाद window.location.reload ऐसा नहीं करते हैं AJAX पोस्ट दृश्य कभी पुनः लोड नहीं होगा। मैं एमवीसी के लिए नया हूं, लेकिन मुझे यकीन है कि ऐसा करने का एक बेहतर तरीका है। मैं यहाँ कुछ मौलिक समझ नहीं रहा हूँ। शायद सही दिशा में एक झुकाव? पहले ही, आपका बहुत धन्यवाद।

+0

बेहतर है एक आंशिक दृश्य remarksgrid बनाने के लिए और एक वापस जाने के लिए आंशिक दृश्य परिणाम SetEnddateRemarkTo कल विधि में। – ssilas777

+0

@ ssilas777 आप सही हैं। मुझे एहसास हुआ कि मैंने इसे पोस्ट करने के एक दिन बाद, जिस समाधान के लिए मैं गया था। जवाब देने के लिए धन्यवाद। –

उत्तर

17

आप AJAX कॉल का अनुरोध किया है, आप अपनी प्रतिक्रिया

का उपयोग कर रीडायरेक्ट करना चाहिए अपने नियंत्रक को संशोधित लैंडिंग यूआरएल साथ JSONResult वापस जाने के लिए:

public ActionResult SetEnddateRemarkToYesterday(int remarkID) { 
    //Some logic to persist the change to DB. 
    var redirectUrl = new UrlHelper(Request.RequestContext).Action("Index", "Controller"); 
     return Json(new { Url = redirectUrl }); 
} 

जे एस कॉल:

$.post("Home/SetEnddateRemarkToYesterday", { remarkID: remarkID }, function (result) { 
    window.location.href = result.Url 
}); 
+0

इसका परीक्षण किया। सतपाल के रूप में काम करता है सुझाव देता है। अंत में मैं ग्रिड को आंशिक दृश्य पर डालने के लिए गया था। यह मेरे लिए एमवीसी आर्किटेक्चर के साथ लाइन में और अधिक लगता है। सतपाल का जवाब देने के लिए धन्यवाद। –

4

अजाक्स पोस्ट करने के बाद आपको विशिष्ट यूआरएल पर कॉल करने की आवश्यकता है .. इस तरह .. window.location.href = यूआरएल

0

jQuery.post नया पृष्ठ .done विधि के माध्यम से दिया जाता है का उपयोग करते समय

jQuery

jQuery.post("Controller/Action", { d1: "test", d2: "test" }) 
    .done(function (data) { 
     jQuery('#reload').html(data); 
    }); 

एचटीएमएल

<body id="reload"> 
संबंधित मुद्दे