2017-01-07 3 views
1

signalrハブクラスで関数を作成しましたが、私のビューでUrl.Actionをクリックしてこの関数を使用したいと考えています。Url.Actionでsignalr hub関数を使用するには?

私は、このようにすることを実行しようとしました:これは私の関数はHubクラス

public void AddNewUserMessage(string toUser) 
{ 
    var toUserName = _dbContext.Users.Where(x => x.Id == toUser).Select(y => y.UserName).ToString(); 
    var name = Context.User.Identity.Name; 
    var userId = Context.User.Identity.GetUserId(); 
    Clients.Client(toUser).onNewUserConnected(userId, name); 
    Clients.Caller.onNewUserConnected(toUser, toUserName); 
} 

であり、これは私のUrl.Actionです:

<a class="btn btn-lg btn-primary" href="@Url.Action("Index", "Chat" , new {onclick= "chatHub.server.addNewUserMessage("+item.Id+");" })" aria-label="Go to chat"> 
<i class="fa fa-commenting-o"></i></a> 

それがこのように動作することは可能ですか?

答えて

0

chatHubを参照する場合は$.connectionオブジェクトを使用し、サーバーメソッドを呼び出す場合はserverの代わりにclientオブジェクトを使用する必要があります。ここをクリックしてください:https://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-javascript-client#callserver

また、マークアップにJavaScriptを埋め込まないでください。それは物事を維持することが困難になります。

<a href="@Url.Action("Index", "Chat", new { onclick= "$.connection.chatHub.client.addNewUserMessage("+item.Id+");" })"> 
    <i class="fa fa-commenting-o"></i> 
</a> 
関連する問題