2013-05-13 50 views
0

我試圖使用mvc 4索引視圖顯示信號r某些文本。我沒有在索引頁上獲得任何消息。signal r mvc 4顯示索引視圖的詳細信息

樞紐代碼

public class TasksHub : Hub 
{ 
    public void NewTaskDetails(int taskid,string taskname,string created,string role) 
    { 
     Clients.All.addMessage(taskid, taskname, created, role); 
} } 

控制器

var context = GlobalHost.ConnectionManager.GetHubContext<TaskManager.Hubs.TasksHub>(); 
context.Clients.All.addMessage 
(tasklist.Taskid,tasklist.Taskname,tasklist.createdby,tasklist.Role); 

視圖

<script src="~/Scripts/jquery-1.7.1.min.js"></script> 
<script src="~/Scripts/jquery.signalR-1.0.0-alpha1.min.js"></script> 
<script src="~/SignalR/Hubs"></script> 
<script type="text/javascript"> 
$(function() { 
    var THub = $.connection.TaskHub; 
    $messages = $("#messages"); 
    myHub.client.send = function (taskid, taskname, created, role) { 
     $messages.append("<br /><b>" + taskid + ":</b>" + taskname); 
    } 

    $.connection.hub.start(); 
}); 



</script> 
<div id="messages"> 
</div> 

回答

0

首先你行:

myHub.client.send = function (taskid, taskname, created, role) { 
    $messages.append("<br /><b>" + taskid + ":</b>" + taskname); 
} 

需要:

THub.client.send = function (taskid, taskname, created, role) { 
    $messages.append("<br /><b>" + taskid + ":</b>" + taskname); 
} 

什麼是myHub你沒有聲明該變量?

在上面的第二行中,您定義了Hub可以調用以將消息發送到客戶端的函數。您稱該功能爲「發送」,但在集線器端您稱爲「addMessage」

3您需要定義一些將執行集線器方法調用的客戶端操作。我的意思是什麼觸發了hub方法的調用?你需要一些邏輯添加到您的$ .connection.hub.start()是這樣的:

$('#someElement').click(function() { 
    // Declare taskid, taskname, created, role. 
    THub.server.NewTaskDetails(taskid, taskname, created, role); 
} 
+0

我改變我的代碼,但我仍然在HTTP遇到錯誤未處理的異常在65行,第9列://本地主機: 45845/ 0x800a138f - JavaScript運行時錯誤:無法獲取屬性'TasksHub'的未定義或空引用'$(document).ready(function() {var THub = $ .connection.TasksHub; $ messages = $( 「#messages」); THub.client.send = function(taskid,taskname,created,role){$ messages.append(「
」+ taskid +「:」+ taskname); } $ .connection。 THub.s酸();}); – user1127905 2013-05-14 06:32:43

+0

你可以更新你的問題到你現在擁有的代碼嗎?此外,SignalR現在正式發佈,您應該通過NuGet下載並使用最新版本,而不是現在使用的alpha版本。 你還添加了RouteTable.Routes.MapHubs();作爲你的global.asax文件的第一行? 最後嘗試在Hub類上放置hubname屬性。所以基本上把[HubName(「TasksHub」)]放在你的集線器類上,看看是否解決了這個問題。 – Marko 2013-05-14 13:14:41

+0

如果您仍有問題,請參閱本教程: http://www.asp.net/signalr/overview/getting-started/tutorial-getting-started-with-signalr-and-mvc-4 – Marko 2013-05-14 13:15:17