2008-11-13 10 views
13

मेरे पास एक एमवीसी नियंत्रक है जो एक प्रक्रिया के माध्यम से चलता है, कुछ डेटा सेट करता है, और उसके बाद इस डेटा के परिणाम को दृश्य में उपयोगकर्ता को वापस देता है। प्रक्रिया का समय संसाधित होने वाले डेटा की मात्रा पर निर्भर है। जब प्रक्रिया चल रही है, तो दृश्य के भीतर एनिमेटेड .gif को प्रदर्शित करने के लिए मुझे एक अच्छा तरीका चाहिए, जिससे उपयोगकर्ता को यह पता चल जाए कि कुछ चल रहा है।प्रगति संकेतक में एएसपी.NET एमवीसी लोडिंग

मैंने विभिन्न AJAX विधियों और आंशिक विचारों को देखा है लेकिन अभी भी इसे पूरा करने के लिए एक अच्छा तरीका नहीं मिल रहा है। मैं वास्तव में कामना करता था कि मैं एक एक्शनफिल्टर था जो OnActionExecuting ईवेंट के दौरान एक व्यू या आंशिक दृश्य लौटाएगा जो इस एनिमेटेड .gif को प्रदर्शित करता है, फिर एक बार नियंत्रक ने प्रक्रिया पूरी कर ली और व्यूडेटा को वापस कर दिया, वास्तविक दृश्य के साथ दृश्य या आंशिक दृश्य डेटा प्रदर्शित किया जा सकता है।

ऐसा लगता है कि jQuery पृष्ठभूमि में नियंत्रक कार्रवाई को कॉल करने के लिए एक अच्छा असीमित तरीका प्रदान करने में सक्षम होगा और फिर दृश्य प्रस्तुत करेगा। किसी भी सहायता की सराहना की जाएगी।

उत्तर

24

अपने नियंत्रक में:

public JsonResult GetSomething(int id) 
{ 
    return Json(service.GetSomething(id)); 
} 

ध्यान में रखते हुए (जावास्क्रिप्ट, JQuery का उपयोग कर):

$('#someLink').click(function() 
{ 
    var action = '<%=Html.ResolveUrl("~/MyController.mvc/GetSomething/")%>' + $('#someId').val() + '?x=' + new Date().getTime(); 
    $('#loading').show() 
    $.getJSON(action, null, function(something) 
    { 
     do stuff with something 
     $('#loading').hide() 
    }); 
}); 

ध्यान दें कि यह एक मार्ग है, जहां 'आईडी' कार्रवाई के बाद आता है मान लिया गया है। कार्रवाई पर 'एक्स' पैरामीटर आईई में आक्रामक कैशिंग को हराने के लिए है।

दृश्य (मार्कअप) में:

<img id="loading" src="images/ajax-loader.gif" alt=""/> 
<!-- use a css stlye to make display:none --> 

प्राप्त लोडर here GIFs।

यह भी ध्यान दें कि आपको जेसन के साथ ऐसा करने की ज़रूरत नहीं है। यदि आप चाहें तो आप नियंत्रक कार्रवाई से एचटीएमएल या एक्सएमएल जैसी अन्य चीजें ला सकते हैं।

+0

मुझे $ ('# लोडिंग') उठाए जाने के लिए 'लोडिंग' में # जोड़ना पड़ा। दो जेएस टुकड़ों के लिए() और $ ('लोडिंग') दिखाएं। .. कुल मिलाकर, जेएस के लिए धन्यवाद ... वह सही था .. –

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