JS Client不会在SignalR Hub上调用Method

时间:2017-11-16 22:35:25

标签: asp.net-mvc signalr signalr-hub

我有一个MVC项目,它有2个按钮和6个文本框。我想在Hub上调用不同的方法。

客户

X      unq_Y
-------------
1      a
1      b
2      c
2      UUID()_result
1      UUID()_result
2      d

在我按“btnBuy”或“btnCell”的情况下,它应该使用不同的参数调用服务器上的交易方法。

服务器

BitcoinHub(名称)类方法

$(document).ready(function () {
            var bitcoinHub = $.connection.bitcoinHub;

            $("#btnBuy").click(function () {
                var tl = document.getElementById("bitcoinBuy").value;
                var btc = document.getElementById("aBitcoin").value;
                var total = document.getElementById("aTotal").value;
                bitcoinHub.server.trade("buy",@Model.user,tl,btc,total);
            });

            bitcoinHub.client.broadcastSell = function (model) {
                //   $("#sellGrid").append("<li>"+model.Sell+"</li>");
            };

            $("#btnSell").click(function () {
                var tl = document.getElementById("bitcoinSell").value;
                var btc = document.getElementById("sBitcoin").value;
                var total = document.getElementById("sTotal").value;
                bitcoinHub.server.trade("sell",@Model.user,tl,btc,total);
            });

            bitcoinHub.client.broadcastPurchase = function (model) {
                // $("#buyGrid").append("<li>"+model.Buy+"</li>");
            };
            $.connection.hub.start();   });

在我按“btnBuy”或“btnCell”的情况下,它会通过clickeventhandler。问题是不会调用集线器上的方法。

1 个答案:

答案 0 :(得分:1)

您不能像JS Model.user那样在JS中使用该模型。有关详细信息,请参阅Accessing MVC's model property from Javascript

其他重新安排您的代码。在建立连接之前,不要在服务器上调用方法:

$(document).ready(function () {
                var bitcoinHub = $.connection.bitcoinHub;           

                bitcoinHub.client.broadcastSell = function (model) {
                    //   $("#sellGrid").append("<li>"+model.Sell+"</li>");
                };

                bitcoinHub.client.broadcastPurchase = function (model) {
                    // $("#buyGrid").append("<li>"+model.Buy+"</li>");
                };
                $.connection.hub.start().done(function(){
                    // DO not call methods on server until connection is established.
                    $("#btnBuy").click(function () {
                        var tl = document.getElementById("bitcoinBuy").value;
                        var btc = document.getElementById("aBitcoin").value;
                        var total = document.getElementById("aTotal").value;
                        bitcoinHub.server.trade("buy",@Model.user,tl,btc,total);
                    });
                    $("#btnSell").click(function () {
                        var tl = document.getElementById("bitcoinSell").value;
                        var btc = document.getElementById("sBitcoin").value;
                        var total = document.getElementById("sTotal").value;
                        bitcoinHub.server.trade("sell",@Model.user,tl,btc,total);
                });
    });   });