2017-05-03 2 views
0

私は、ユーザープッシュ送信ボタンを押した後、同時に4つのテキストボックスを作成しています。 1つの部分では、すべてのユーザーにテキストボックス値を送信していますが、これは機能しています。しかし、特定のユーザーに値を送信しようとすると、ボタンを押した後、すべてのテキストボックスが空になります。SignalRの特定のユーザーに値を送信

これは、すべてのユーザーに値を送信し、働いているコードです:

public void Send(string loanType, string loanAmount, string interestRates, string payment) 
    { 
     User sender = GetUser(Context.User.Identity.Name); 

     var username = sender.Name; 
     IEnumerable<string> connectionIds = sender.ConnectionIds; 

     //All connected clients. 
     Clients.All.broadcastMessage(loanType, loanAmount, interestRates, payment); 

    } 

、これはJSです::

これはハブです

$('#sendmessage').click(function (e) { 
      sendPayment(); 
      e.preventDefault(); 
     }); 


     function sendPayment() { 
     var msgValue = $msgTxt.val(); 
     var loanType = $('#txtLoanType').val(); 
     var loanAmount = $('#txtLoanAmount').val(); 
     var interestRates = $('#txtInterestRates').val(); 
     var payment = $('#txtPayment').val(); 

     if (loanType !== null && loanType.length > 0 && loanAmount !== null && loanAmount.length > 0 && interestRates !== null && interestRates.length > 0 
      && payment !== null && payment.length > 0) { 

      if (viewModel.isInPrivateChat()) { 
       $.connection.hub.start(); 
       chatHub.server.send(msgValue, viewModel.privateChatUser(), $('#txtLoanType option:selected').val(), $('#txtLoanAmount').val(), $('#txtInterestRates').val(), $('#txtPayment').val()); 


      } 
      else { 

       // Call the Send method on the hub. 
       chatHub.server.send($('#txtLoanType option:selected').val(), $('#txtLoanAmount').val(), $('#txtInterestRates').val(), $('#txtPayment').val()); 


      } 
     } 



    chatHub.client.broadcastMessage = function (loanType, loanAmount, interestRates, payment) { 
      $('#txtLoanType').val(loanType); 
      $('#txtLoanAmount').val(loanAmount); 
      $('#txtInterestRates').val(interestRates); 
      $('#txtPayment').val(payment); 
    }; 

が、私はしてみてください特定のユーザーに値を送信していません。C#コードがうまく動作しないため、問題がJSにあります。

これは、特定のユーザーにテキストボックスの値を送信するC#のメソッドです:

   if (viewModel.isInPrivateChat()) { 
       $.connection.hub.start(); 
       chatHub.server.send(msgValue, viewModel.privateChatUser(), $('#txtLoanType option:selected').val(), $('#txtLoanAmount').val(), $('#txtInterestRates').val(), $('#txtPayment').val()); 

答えて

0

関数のシグネチャが一致しない:

public void Send(string message, string to, string loanType, string loanAmount, string interestRates, string payment) 
    { 
     User receiver; 
     if (Users.TryGetValue(to, out receiver)) 
     { 

      User sender = GetUser(Context.User.Identity.Name); 

      IEnumerable<string> allReceivers; 
      lock (receiver.ConnectionIds) 
      { 
       lock (sender.ConnectionIds) 
       { 

        allReceivers = receiver.ConnectionIds.Concat(sender.ConnectionIds); 
       } 
      } 

      foreach (var cid in allReceivers) 
      { 
       Clients.Client(cid).broadcastMessage(new { message = message, isPrivate = true, loanType = loanType, 
        loanAmount = loanAmount, 
        interestRates = interestRates, 
        payment = payment 
       }); 
      } 
     } 
    } 

それはJSファイル内のプライベートの部分を呼び出します。異なる数のパラメータがあり、正確に一致する必要があります。または、javascript関数が呼び出されない場合は、broadcastMessage関数を呼び出すときにsend関数のパラメータを使用しようとしているようです。ユーザーのためのJavaScriptで

あなたが探している:

function (loanType, loanAmount, interestRates, payment) 

しかし、あなたが送信している:

broadcastMessage(new { message = message, isPrivate = true, loanType = loanType, 
       loanAmount = loanAmount, 
       interestRates = interestRates, 
       payment = payment 
      }) 
関連する問題