2017-01-07 4 views
1

Я создал функцию в моем классе хакеров signalr, и я хочу использовать эту функцию после нажатия на Url.Action на мой взгляд.Как использовать функцию signalr hub в Url.Action?

Я пытался сделать это таким образом: Это моя функция в 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

Ваш пример должен использовать $.connection объект при обращении к chatHub и использовать client объект вместо server при вызове методов сервера. См. MSDN здесь: 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>