2011-08-14 46 views
0

我有這個字符串變量調用「狀態」,這是由我做的串行端口連接更新。如果您連接到串行端口,則顯示「狀態」節目。 我做了一個簡單的2按鈕視圖。一個打開連接,另一個關閉它。 我希望能夠自動更新視圖內的連接狀態。 我想我需要使用某種類型的計時器,顯示裏面的「地位」每特定時間的字符串,但我對如何做到這一點不知道..更新ASP.NET MVC視圖中的變量

這是我的HomeController:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public JsonResult CheckStatus() 
    { 
    return Json(new { status = "active" }); 
    } 
} 

,這是我的看法:

<script type="text/javascript"> 
$(function() { 
    // poll every 5 seconds 
    setInterval('checkStatus()', 5000); 
} 

function checkStatus() { 
    $.ajax({ 
     url: 'Home/CheckStatus', 
     type: 'POST', 
     dataType: 'json', 
     success: function(xhr_data) { 
      if(xhr_data.status == 'active') { 
       // this would just disable the "Open" button 
       $('#btnOpen').attr('disabled', 'disabled'); 
      } 
     } 
    }); 
} 

+0

這聽起來像你需要的地方輪詢機制。你有沒有嘗試過任何東西?有幾種方法可以做到這一點。 –

+1

我很想聽聽更多關於它的信息 –

+0

請帶上一個案例,你真的試圖自己解決它,並被卡住。 –

回答

2

我會假設你可以使用jQuery,和你有一個控制器行動日在看起來是這樣的:

[HttpPost] 
public class StatusController : Controller 
{ 
    public JsonResult CheckStatus() 
    { 
     return Json(new { status = "active" }); 
    } 
} 

然後,在您的視圖中添加下面的腳本

<script type="text/javascript"> 
    $(function() { 
     // poll every 5 seconds 
     setInterval('checkStatus()', 5000); 
    } 

    function checkStatus() { 
     $.ajax({ 
      url: 'Status/CheckStatus', 
      type: 'POST', 
      dataType: 'json', 
      success: function(xhr_data) { 
       if(xhr_data.status == 'active') { 
        // this would just disable the "Open" button 
        $('#btnOpen').attr('disabled', 'disabled'); 
       } 
      } 
     }); 
    } 
</script> 
+0

我實際上有一個簡單的字符串裏面的模型,我在視圖中顯示它。我只想讓視圖在每個給定的時間更新它。 –

+0

@Asaf Nevo這不是你的OP的一部分。你能否修改並儘可能描述性? –

+0

會做。 我使用modbus RTU協議與流量計進行通信。 –