【问题标题】:SignalR in ASP.NET WebFormsASP.NET WebForms 中的 SignalR
【发布时间】:2015-12-07 17:55:40
【问题描述】:

在我的一个项目中,我需要使用 SignalR 库。所以我决定创建一个简单的应用程序来检查它是如何工作的。我根据一些展示如何编写聊天室的教程创建了这个应用程序。
唯一不同的是,我的项目是 WebForms,而且我也在其中使用了 ASP.NET 控件。

这是我到目前为止所做的:

  1. 我安装了SignalR

  2. 我创建了ChatHub 文件:

ChatHub.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using Microsoft.AspNet.SignalR;

using Microsoft.AspNet.SignalR.Hubs;    
namespace SignalRTest
{

    public class ChatHub : Hub
    {
        public void sendMessage(string msg)
        {
            Clients.All.addMessage(msg);
        }
    }
}
  1. 在 Default.aspx 页面中:

<html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <title></title>
    <script src="Scripts/jquery-1.10.2.min.js"></script>
    <script src="Scripts/jquery.signalR-2.2.0.min.js"></script>
    <script src="/signalr/hubs"></script>

    <script type="text/javascript">
        $(function () {
            var chat = $.connection.chatHub;

            chat.client.addMessage = function (msg) {
                $('#chat_list').append("<li>" + msg + "</li>");
            };

            $.connection.hub.start().done(function () {
                $('#Button1').click(function () {
                    chat.server.sendMessage($('#TextBox1').val());
                });
            });
        });
    </script>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                <asp:Button ID="Button1" runat="server" Text="Send" />
            </div>
            <div>
                <ul id="chat_list">

                </ul>
            </div>
        </form>
    
    </body>
</html>
  1. 启动文件:

Startup.cs

using Microsoft.Owin;
using Owin;

[assembly: OwinStartup(typeof(SignalRTest.Startup))]
namespace SignalRTest
{
    public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.MapSignalR();
        }
    }
}

我设置断点并单击发送按钮会在服务器上触发 sendMessage 方法,并在客户端触发 addMessage JS 函数。但问题来了:

当我向其他用户发送内容时,他可以在&lt;ul&gt;&lt;/ul&gt; 元素中看到该消息。但不是我。然后当他向我发送回复时,我可以看到它,但他的列表被清除了。

会不会是使用 ASP 控件引起的?
我不确定是否能以最佳方式引用这些控件。

附言。抱歉格式错误,但我无法处理 C# 代码。

【问题讨论】:

    标签: c# jquery asp.net signalr


    【解决方案1】:

    您的问题是您希望您的按钮同时运行服务器端并触发您的 javascript 代码。

    <asp:Button ID="Button1" runat="server" Text="Send" />
    

    runat="server" 位意味着您将看到页面刷新,因为应用程序将尝试运行服务器端代码,因此消息将被清除。

    如果你在一个普通的 html 元素上运行代码,这段代码应该可以正常工作。

    I.E.去:

    <input ID="Button1" type="button" value="Send" />
    

    【讨论】:

    • @Cahir09 如果此答案解决了您的问题,请单击旁边的勾号将其标记为已接受的答案。见this
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多