2013-05-13 96 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