2017-11-16 16 views
0

2つのボタンと6つのテキストボックスを持つMVCプロジェクトがあります。私はハブ上でさまざまなメソッドを呼びたいと思う。JS ClientはSignalR Hubのメソッドを呼び出さない

クライアント:私は押した場合

$(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」それは異なるパラメータを使用してサーバー上の貿易Methodeのを呼び出す必要があります。

サーバー

BitcoinHub(名)クラスメソッドの場合

public void trade(string parametre, Users cUser, string tl, string btc, string total) 
    { 
     switch (parametre) 
     { 
      case "sell": 
       // Do something not important here 
       break; 
      case "buy": 
       // Do something not important here 
       break; 
     } 
    } 

私はそれがclickeventhandlerトラフ行く "btnBuy" または "btnCell" を押してください。問題は、ハブ上のメソッドが呼び出されないことです。

+0

私は最後のセクションを理解していません。それが明確であると書き直せますか? – Tester

+0

私はMVC形式です。 各ボタンに2つのボタンと3つのテキストボックスがあります。 最初のボタンを押すと3つのテキストボックスの値が取り込まれ、サーバー側の取引方法に送信され、データベースへのデータの挿入が機能します。 質問:私がボタンを押したとき。 Jsの.clickイベントは、両方とも連携して動作しています。私はブレークポイントコードを使用すると、最初の.clickコードブロックを呼び出し、他のボタンの.click関数にジャンプします。 その他この場合、このサーバー側の取引方法は呼び出されません。 –

+0

あなたのhtmlを追加することはできますか? – Tester

答えて

1

@ 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); 
       }); 
    }); }); 
関連する問題