2012-03-20 37 views
2

我正在開發一個MVC3項目,並開始使用SignalR。如何讓SignalR在_Layout.cshtml內工作?

我跟着幾個演示,但我似乎無法得到它的工作時,我的代碼是\ Views \ Shared_Layout.cshtml。我總是得到「必須先啓動連接,然後才能發送數據。」錯誤。

請參考下面我的代碼:

我的班級:

[HubName("notificationsHub")] 
public class NotificationsHub : Hub 
{ 
    public void updateServer() 
    { 
     Clients.updateClient("boom"); 
    } 
} 

我裏面_Layout.cshtml腳本:

$(function(){ 
     var signalR = $.connection.notificationsHub; 

     signalR.updateClient = function (message) { 
      alert(message); 
     };   

     $("#open").click(function() { 
      signalR.updateServer(); 
     }); 

     $.connection.hub.start(function() { 
      alert("Connected"); 
     }); 
    }); 

腳本引用:

<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.6.4.js")"></script> 
    <script type="text/javascript" src="@Url.Content("~/Scripts/jquery.signalR.js")"></script> 
    <script type="text/javascript" src="@Url.Content("~/signalr/hubs")"></script> 

我的NotificationsHub類位於一個名爲NotificationsHub的文件夾中,該文件夾與我的視圖具有相同的目錄級別。

我在.html文件中試過這個,它完美的工作(我得到$ .connection.hub.start的警報回調)。

我在這裏錯過了什麼?

謝謝

+0

一切看起來都適合我,我會確保所有腳本引用都正確解析,並且沒有連接錯誤。 – 2012-03-20 10:59:26

+0

謝謝@ Gary.S,我想我必須更深入地瞭解導致它的原因。 – dmc 2012-03-20 11:29:58

回答

3

這很奇怪,我不能重現問題。這是我的佈局:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8" /> 
    <title>@ViewBag.Title</title> 
    <script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.6.4.js")"></script> 
    <script type="text/javascript" src="@Url.Content("~/Scripts/jquery.signalR.js")"></script> 
    <script type="text/javascript" src="@Url.Content("~/signalr/hubs")"></script> 
    <script type="text/javascript"> 
     $(function() { 
      var signalR = $.connection.notificationsHub; 

      signalR.updateClient = function (message) { 
       alert(message); 
      }; 

      $("#open").click(function() { 
       signalR.updateServer(); 
      }); 

      $.connection.hub.start(function() { 
       alert("Connected"); 
      }); 
     });  
    </script> 
</head> 
<body> 
    @RenderBody() 
    <a href="#" id="open">Open</a> 
</body> 
</html> 

工作得很好。確保你沒有腳本引用錯誤。

+0

謝謝@Darin Dimitrov。我會嘗試刪除所有其他腳本引用,以找出哪個引起此問題。 – dmc 2012-03-20 11:31:18

+0

謝謝Gary.S和@Darwin Dimitrov,你們是對的。 正在導致引用錯誤。它現在有效!謝謝! – dmc 2012-03-20 11:55:50