【问题标题】:How to use signalr hub function in Url.Action?如何在 Url.Action 中使用信号器集线器功能?
【发布时间】:2017-01-07 12:38:59
【问题描述】:

我在我的信号器集线器类中创建了一个函数,我想在单击视图中的 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>

这样有可能吗?

【问题讨论】:

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


    【解决方案1】:

    您的示例需要在引用chatHub 时使用$.connection 对象,并在调用服务器方法时使用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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-06
      • 2019-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多