2012-01-26 54 views
0

我想使用signalR javascript从mvc剃须刀形式插入数据到数据库。任何人都有一些很好的建议,如何正确使用?第一次与SignalR合作。 这是我有的代码,我需要在@RenderBody()行下面输入SignalR js代码。SignalR javascript在mvc剃刀应用程序

<!DOCTYPE html> 

<script src="~/Scripts/jquery-1.6.4.min.js" type="text/javascript"></script> 
<script src="~/Scripts/jquery.signalR.min.js" type="text/javascript"></script> 
<script src="Scripts/knockout-2.0.0.js" type="text/javascript"></script> 
<script src="Scripts/json2.min.js" type="text/javascript"></script> 

<html lang="en"> 
    <head> 
     <meta charset="utf-8" /> 
     <title>My ASP.NET Web Page - @Page.Title</title> 
     <link href="@Href("~/Styles/Site.css")" rel="stylesheet" /> 
     <link href="@Href("~/favicon.ico")" rel="shortcut icon" type="image/x-icon" /> 
    </head> 
    <body> 
     <div id="page"> 
      <div id="header"> 
       <p class="site-title">My ASP.NET Web Page</p> 
       <div id="login"> 
        @if (WebSecurity.IsAuthenticated) 
        { 
         <p> 
          Welcome <a href="@Href("~/Account/ChangePassword")" title="Change password">@WebSecurity.CurrentUserName</a>! 
          <a href="@Href("~/Account/Logout")">Logout</a> 
         </p> 
        } 
        else 
        { 
         <ul> 
          <li><a href="@Href("~/Account/Register")">Register</a></li> 
          <li><a href="@Href("~/Account/Login")">Login</a></li> 
         </ul> 
        } 
       </div> 
       <ul id="menu"> 
        <li><a href="@Href("~/")">Home</a></li> 
        <li><a href="@Href("~/About")">About</a></li> 
       </ul> 
      </div> 
      <div id="main"> 
       <div id="content"> 
        <h1>@Page.Title</h1> 
        @RenderBody() 
        <script type="text/javascript"> 
        $(function() { 
        var test = $.connection.SignalRHub(); 
        </script> 
       </div> 
       <div id="footer"> 
        &copy; @DateTime.Now.Year - My ASP.NET Web Page 
       </div> 
      </div> 
     </div> 
    </body> 
</html> 

另外我有类,我想输入代码插入数据在数据库中。我需要使用集线器,我认为这是做到这一点的正确方法,但任何更有经验的人与SignalR更欢迎给我建议。

下面是代码:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using SignalR.Hubs; 

/// <summary> 
/// Summary description for SignalRHub 
/// </summary> 
namespace SignalR 
{ 
public class SignalRHub : Hub 
{ 
    public SignalRHub(string message) 
    { 
     string test = ""; 
    } 
    public void InsertData(string value) 
    { 

    } 
    public void DeleteData(int id) 
    { 
    } 
} 
} 

由于提前,Laziale

+0

我会假设上面的代码不起作用(出于几个原因) - 你问如何解决它? –

回答

1

我会通过阅读这篇文章开始:

http://www.dotnetcurry.com/ShowArticle.aspx?ID=780

这将引导您如何设置SignalR并在ASP.NET MVC3中使用它。该文章还包括填充源,所以你可以通过它来挖掘。这里是链接到代码:

www.dotnetcurry.com/Uploads/mvc/MultiEditWithSignalR.zip

祝您好运!

2

你错过了集线器的包含。你可以在这里阅读更多https://github.com/SignalR/SignalR/wiki/QuickStart-Hubs

+0

看来我没有该文件夹,“/ signalr/hubs”在我的根目录中。无论如何我需要包括吗?感谢您帮助我 – Laziale

+0

查看有关如何使用mvc执行此操作的常见问题解答: https://github.com/SignalR/SignalR/wiki/Faq – davidfowl

+0

/signalr/hubs是一条虚拟路径。它神奇地使用它的巫术挂钩一个httpmodule某处,并且我认为这响应了对/ signalr/hubs的呼叫。检查的一个好方法是运行你的项目并在浏览器中输入/ signalr/hubs。它应该呈现一些JavaScript到屏幕上。如果你看到JavaScript,你知道它的工作,你可以添加引用罚款。 – spaceman

0

我猜你缺少的JavaScript包括集线器。

<script src="/signalr/hubs"></script> 

为此,您必须为集线器添加路由。

public static void RegisterRoutes(RouteCollection routes) 
    { 
     RouteTable.Routes.MapHubs(); 

.... 

我不知道你是否有SignalR继续努力,但它是defintely传达给之间,并从你的客户的一个好方法。