2017-07-26 134 views
0

我是新的Asp.net mvc。我試圖寫兩個簡單的tcp應用程序。第一個應用程序是客戶端(Windows窗體),第二個主機(Asp.net mvc)。在第一個應用程序中,我們可以編寫消息併發送給第二個應用程序。 我在第二個應用程序中收到了正確的消息,並在HomeController中設置了屬性消息。 我想每次從第一個應用程序發送它並設置屬性消息時,在消息屬性中的字符串上更改div'messageDiv'。Asp.net mvc更改DIV內容,無需重新加載和無按鈕

下面的代碼顯示瞭如何使用按鈕。每次我們從第一個應用程序消息發送,然後在第二個點擊接收按鈕它正確地更改。

有可能寫間隔會改變消息屬性的div?

Index.cshtml

@{ 
    ViewBag.Title = "Index"; 
} 


<h2>Waiting for messages : </h2> 


@using (Ajax.BeginForm(new AjaxOptions() 
{ 
    UpdateTargetId = "messageDiv", 
    HttpMethod = "Post" 
})) 
{ 
    <input id="btn" type="submit" value="receive"/> 
} 


<div id="messageDiv"></div> 

HomeController.cs

public class HomeController : Controller 
{ 
    public static string message { get; set; } 
    // GET: Home 
    [HttpGet] 
    public ActionResult Index() 
    { 
     tcpHost host = new tcpHost(); 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult Index(string x) 
    { 
     return Content(string.Format(message)); 

    } 
} 

回答

0

如果我理解正確的,你需要的東西,會自動更新您的郵件DIV,只要你/別人收到一條消息?

您需要實現一個real-time communication(推薦)或者您可以使用setInterval method in JavaScript這將不斷檢查是否有一些新的消息,如果有,然後它會獲取並顯示在消息div(不推薦)。

+0

沒錯。就像我之前說過的,我知道如何在HomeController中更改屬性消息,當我們單擊接收按鈕時,它會讀取消息屬性並將其設置爲div內容。我可以每隔2秒寫一個會讀取屬性的時間間隔並替換div內容嗎?我用button和ajax做了這個,現在我想不用按鈕就做到這一點。 – MatLin

+0

當然,你可以但效率不高,因爲會有太多的發送請求到你的服務器,再加上,可能會延遲2秒。試試這個:[link](https://www.w3schools.com/jsref/met_win_setinterval.asp)。我想你有一個函數,檢查是否有新的消息使用AJAX。將該函數名稱作爲第一個參數,將2000(毫秒,1000毫秒= 1秒)作爲第二個參數。我認爲它應該沒有任何修改。 – Spectarion

+0

它的工作原理!現在我將嘗試使用SignalR構建這個應用程序。非常感謝你。 – MatLin

相關問題