asp.net mvc 4 - मैं MVC 4 में प्रत्येक 3 सेकंड में आंशिक दृश्य कैसे रिफ्रेश करूं?



asp.net-mvc-4 timer (1)

मुझे पूरा काम की संख्या के आधार पर अपडेट करने के लिए एक प्रगति पट्टी प्राप्त करने की आवश्यकता है I पूर्ण कार्य की संख्या एक एसक्यूएल सर्वर डीबी की नौकरियों की मेज पर संग्रहीत है। नौकरियों की संख्या के लिए प्रत्येक 3 सेकंड डीबी को पूछने के लिए मुझे अपने एएसपी.नेट एमवीसी 4 एप्लिकेशन की ज़रूरत है और इस डेटा का उपयोग करके प्रगति पट्टी को अपडेट करने के लिए जो आंशिक दृश्य में आयोजित किया गया है। टाइमर काम करता है और यह स्टेटस कंट्रोलर में मेरे _getforStatus एक्शन को कॉल करता है, और ऐसा लगता है कि EntityDB को कॉल करता है, लेकिन ऐसा लगता है कि टाइमर कहने से पहले ही अन्य दृश्य को कॉल करने के लिए लगता है। मैं प्रत्येक 3 सेकंड को रीफ्रेश करने के लिए प्रगति बार कैसे प्राप्त करूं?

मेरे _Layout.cshtml दृश्य का शीर्षक, उस स्थिति की शुरुआत करता है, जो कि स्थिति नियंत्रक में समान है:

 <head>
      ...
       @Html.Action("InitTimer", 'Status")
      ...
 </head>

इसके अलावा, _Layout दृश्य में मैं आंशिक दृश्य को ऐसे ही एक जंबोट्रॉन में बुलाता हूं:

 <div class="jumbotron" id=progress">
      @{Html.RenderAction("_GetforStatus", "Status");}
 </div>

स्थिति नियंत्रक को ऐसा कोडित किया गया है:

 public class StatusController : Controller
 {
      IntegrationDBEntities _db;

      Private Timer timer1;

      Public void initTimer()
      {
           timer1 = new Timer();
           timer1.elapsed += new ElapsedEventhandler(timer_Elapsed(;
           timer1.interval = 3000;
           timer1.Start();
       }

      Private void timer_Elapsed(Object sender, EventArgs e)
      {
           _GetforStatus();
      }

      [ChildActiononly]
      public PartialViewResult _GetforStatus(0
      {
           _db = new IntegrationDBEntities();
           ViewDataModel - _db.Jobs.ToList();
           return partialView();
      }

संपादित करें: मैंने निम्नलिखित अजाक्स कोड को भी आज़माया। मुझे कोई त्रुटि नहीं मिली, लेकिन मेरी प्रगति बार कभी भी अपडेट नहीं हुई:

 <script>
       function loadPartialView()  {
            $.ajax({
                 url:  '@url.Action("_GetforStatus', "Status")",
                 type:  'GET',
                 dataType:  'html',
                 success: function(result)  {
                      $('progress').html(result);
                 }
            });
        }

  $function () {  
       loadPartialView();
       window.setInterval("loadPartialView()", 3000);
  });
 </script>

मुझे यकीन नहीं है कि यह बीसी काम नहीं कर रहा है मैंने जेएस में "एचटीएमएल। रेंडर एक्शन" का सही प्रतिनिधित्व नहीं किया है या


मुझे लगता है कि आपको अपने एजेक्स कॉल में कुछ बदलाव करने होंगे। यहां बताया गया है कि मैं कैसे कॉल करता हूं

$.ajax({
    url: '@Url.Action("Action", "Controller")',
    type: 'post',
    cache: false,
    async: true,
    data: { id: "frmUser" },
    success: function(result){
        $('.divPartial').html(result);
    } 
});

आपके नियंत्रक पर मुझे नहीं लगता कि आपको केवल बाल कार्रवाई की ज़रूरत है इसके अलावा आप एक खाली आंशिक दृश्य ऑब्जेक्ट वापस कर रहे हैं। यह होना चाहिए

return partialView('_partialName', Model);

आखिरकार आपकी जेक़री में कॉल को रखने के लिए आपको कॉल को फिर से शुरू करने की ज़रूरत है ऐसा कुछ करने की कोशिश करो

$(document).ready(function(){
    function RefreshPartial(){
        //this will wait 3 seconds and then fire the load partial function
        setTimeout(function(){
            loadPartialView();
            //recall this function so that it will continue to loop
            RefreshPartial();
        }, 3000);
    }
    //initialize the loop
    RefreshPartial();
}); 




asp.net-mvc-partialview