2012-03-20 7 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> 

My NotificationsHubクラスは、My Viewsと同じディレクトリレベルのNotificationsHubというフォルダ内にあります。

私はこれを.htmlファイルで試しました。これは完全に動作します($ connection.hub.startのアラートコールバックを取得します)。

私はここで何が欠けていますか?奇妙な

おかげ

+0

すべてのことがわかりました。すべてのスクリプトリファレンスが正しく解決されていることと、接続エラーがないことを確認します。 –

+0

ありがとう@ Gary.S、私はそれが原因で何かを深く見なければならないと思う。 – dmc

答えて

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

ありがとう@ダーリン・ディミトロフどのスクリプトがこの問題を引き起こしているかを調べるために、他のすべてのスクリプトリファレンスを削除しようとします。 – dmc

+0

Gary.Sさんと@Darwin Dimitrovありがとうございました。 は参照エラーの原因となりました。それは今働きます!ありがとう! – dmc

関連する問題