如何在Url.Action中使用signalr hub功能?
How to use signalr hub function in Url.Action?
我在信号器集线器 class 中创建了一个函数,我想在单击视图中的 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>
有没有可能是这样的?
您的示例在引用 chatHub
时需要使用 $.connection
对象,在调用服务器方法时使用 client
对象而不是 server
对象。请在此处查看 MSDN:https://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-javascript-client#callserver
Also, don't embed JavaScript in your markup. It makes things difficult to maintain.
<a href="@Url.Action("Index", "Chat", new { onclick= "$.connection.chatHub.client.addNewUserMessage("+item.Id+");" })">
<i class="fa fa-commenting-o"></i>
</a>
我在信号器集线器 class 中创建了一个函数,我想在单击视图中的 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>
有没有可能是这样的?
您的示例在引用 chatHub
时需要使用 $.connection
对象,在调用服务器方法时使用 client
对象而不是 server
对象。请在此处查看 MSDN:https://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-javascript-client#callserver
Also, don't embed JavaScript in your markup. It makes things difficult to maintain.
<a href="@Url.Action("Index", "Chat", new { onclick= "$.connection.chatHub.client.addNewUserMessage("+item.Id+");" })">
<i class="fa fa-commenting-o"></i>
</a>