2017-01-07 1 views
1

Ich habe eine Funktion in meiner Signal-Hub-Klasse erstellt und möchte diese Funktion nutzen, nachdem ich in meiner Ansicht auf Url.Action geklickt habe.Wie funktioniert die Signal-Hub-Funktion in Url.Action?

Ich habe versucht, dass auf diese Weise zu tun: Das ist meine Funktion

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); 
} 

in Hub Klasse Und das ist mein 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> 

Ist es möglich, dass es auf diese Weise zu arbeiten?

Antwort

0

Ihr Beispiel braucht die $.connection Objekt zu verwenden, wenn auf dem chatHub Bezug genommen wird, und verwenden Sie das client Objekt statt server wenn Servermethoden aufrufen. MSDN hier: https://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-javascript-client#callserver

Auch nicht JavaScript in Ihrem Markup einbetten. Es macht Dinge schwierig zu pflegen.

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