簡體   English   中英

ASP.NET WebForms中的SignalR

[英]SignalR in ASP.NET WebForms

在我的一個項目中,我需要使用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();
        }
    }
}

我設置斷點並點擊Send按鈕激活服務器上的sendMessage方法,並在客戶端激活addMessage JS功能。 但問題出在這里:

當我向其他用戶發送內容時,他可以在<ul></ul>元素中看到該消息。 但不是我。 然后,當他向我發送回復時,我可以看到它,但他的清單被清除了。

它可以由ASP控件引起嗎?
我不確定我是否以最佳方式獲得對這些控件的引用。

PS。 抱歉格式不正確但我無法處理C#代碼。

您的問題是您希望您的按鈕既運行服務器端又觸發您的JavaScript代碼。

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

runat="server"位意味着您將看到頁面刷新,因為應用程序將嘗試運行服務器端代碼,因此消息將清除。

如果你在普通的html元素上運行代碼,這段代碼應該可以正常工作。

IE適用於:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM