![](/img/trans.png)
[英]ASP.NET MVC 5 calling controller method from Javascript Error
[英]Calling Javascript method from Controller in SignalR with MVC 5
我正在嘗試將SignalR實施到一個簡單的MVC 5項目中。 我已經完成了本教程,並且可以正常工作,但是現在我正嘗試從單獨的控制器調用集線器方法。
我有一個名為Generate.cshtml的視圖,帶有此標記和Javascript:
<script type="text/javascript">
$(function() {
var myHub = $.connection.ContosoChatHub;
myHub.client.writeMessageToScreen = function(message) {
$('#messages').append(message);
};
});
</script>
<input type="text" id="msg" />
<input type="button" id="broadcast" value="broadcast" />
<ul id="messages" class="round">
</ul>
樞紐類是
[HubName("ContosoChatHub")]
public class ContosoChatHub : Hub
{
public void NewContosoChatMessage(string message)
{
Clients.All.NewMessage(message);
}
}
然后在我的控制器中,我想調用writeMessageToScreen方法-直接調用它,或通過集線器類調用它。
我讀到可以直接調用Javascript方法
public ActionResult Generate()
{
var context = GlobalHost.ConnectionManager.GetHubContext<ContosoChatHub>();
context.Clients.All.writeMessageToScreen("Test");
return View();
}
但是,這不起作用,什么也沒寫到屏幕上。它也沒有拋出任何錯誤,只是沒有做任何事情。
有誰知道發生了什么事嗎? 有沒有更好的方法可以從Controller調用Hub方法?
您沒有啟動連接更新:
在您的中心班
public class ContosoChatHub : Hub
{
public static NewContosoChatMessage(string message)
{
var notifyContext = GlobalHost.ConnectionManager.GetHubContext<ContosoChatHub >();
notifyContext.Clients.All.NewMessage(message);
}
}
然后在你的控制器
public ActionResult Generate()
{
ContosoChatHub.NewContosoChatMessage("Test");
return View();
}
$(function() {
var myHub = $.connection.ContosoChatHub;
$.connection.hub.start();
myHub.client.writeMessageToScreen = function(message) {
$('#messages').append(message);
};
});
這應該為你工作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.