如何在Url.Action中使用信号器集线器功能?

时间:2017-01-07 12:38:59

标签: javascript c# asp.net-mvc signalr

我在signalr hub类中创建了一个函数,我想在我的视图中点击Url.Action后使用这个函数。

我试图用这种方式做到这一点:这是我在Hub Class

中的功能
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>

它有可能以这种方式工作吗?

1 个答案:

答案 0 :(得分: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>