ASP.NET文本不会从SignalR更改

问题描述 投票:1回答:1

我有一个带有简单标签的ASP.NET webform。我可以在页面加载时更改标签的可见性和文本,或者在没有问题的情况下按下按钮/事件。

但是,当我在SignalR事件上调用returnMessage()时,该方法会完全运行,但页面不会使用新文本进行更新。

    private void returnMessage(string message)
    {
        lblError.Visible = true;
        lblError.Text = message;
    }

以下是SignalR调用该方法的方法:

        HubProxyRegister.On<string>("UserAccountReturnMessage", (message) =>
        { returnMessage(message); });

这是带有标签的空白页面:

<body>
    <form id="form1" runat="server">
    <div> 
            <asp:Label ID="lblError" runat="server" Text="Error:" Visible="False"></asp:Label>
    </div>
    </form>
</body>

我是否需要调用某种回发来显示更新的标签文本,因为Signalr正在调用returnMessage()而不是用户事件?

c# asp.net signalr
1个回答
2
投票

正如petryouno1所写,你需要在客户端上使用一些javascript!客户端可以在服务器上使用signalr执行方法,signalr需要在服务器和客户端之间建立连接。

你需要两个部分:

服务器部分:

你需要一个中心。你可以想象这就像一个端点。在集线器内部,您可以定义客户端可以在服务器上调用的方法。除此之外,我建议您使用通用类型的集线器。作为类型参数,您可以设置一个接口,在该接口中定义可以从服务器上的客户端执行的方法。

小例子:

public class YourHubName : Hub<IClient>
{
    public void MethodCanBeCalledFromClient(string message)
    {
        Clients.All.MethodCanBeCalledFromServer(message);
    }
}

public interface IClient
{
    void MethodCanBeCalledFromServer(string message);
}

客户份额:

<script src="Scripts/jquery.1.7.1.min.js"></script>
<script src="Scripts/jquery.signalR-1.0.0-rc1.min.js"></script>
<script src="/signalr/hubs" type="text/javascript"></script>
<script type="text/javascript">

    $(function() {

        var yourHub = $.connection.yourHubName; // <-- This establishes a connection to server.

        yourHub.client.methodCalledFromServer = function(msg) {    
        // Here you have to grap which jquery your DOM, and change it    
        };

        $.connection.hub.start();

        // After the connection is established you can also send messages 
        // from client to server (without postback) like:
        // yourHub.server.MethodCanBeCalledFromClient(/*String which you can take for example out of your DOM*/));

    });

</script>

不要忘记:

  • 连接所有信号器(下面的链接)
  • 采取正确的JS文件

我建议你阅读:Can SignalR be used with asp.net WebForms?

对于信号器基础知识,请阅读:https://docs.microsoft.com/en-us/aspnet/signalr/overview/guide-to-the-api/hubs-api-guide-javascript-client

© www.soinside.com 2019 - 2024. All rights reserved.