Asp.net mvc 是否可以从返回默认视图的ActionResult调用信号器
我在mvc中有一个POST方法,它保存了一个客户,并在默认情况下重定向到索引视图 现在我想在创建客户时包含一个通知。我已经尝试了基本的信号器实现,但我不确定如何从ActionMethod调用信号器,以便在客户端中反映出来 我的困惑是重定向到Index并使用signar调用客户机可以用相同的Acton方法编写,或者在保存客户机后需要使用客户机的其他方法 代码如下:Asp.net mvc 是否可以从返回默认视图的ActionResult调用信号器,asp.net-mvc,signalr,Asp.net Mvc,Signalr,我在mvc中有一个POST方法,它保存了一个客户,并在默认情况下重定向到索引视图 现在我想在创建客户时包含一个通知。我已经尝试了基本的信号器实现,但我不确定如何从ActionMethod调用信号器,以便在客户端中反映出来 我的困惑是重定向到Index并使用signar调用客户机可以用相同的Acton方法编写,或者在保存客户机后需要使用客户机的其他方法 代码如下: [HttpPost] public ActionResult SaveCustomer(Customer customer) {
[HttpPost]
public ActionResult SaveCustomer(Customer customer)
{
//Save Customer
db.Customer.Add(customer);
db.SaveChanges();
// Notify Client something similar this
//$.connection.hub.start().done(function () {
//chat.server.send(customer.Name);
//});
ChatHub chat = new ChatHub();
chat.Clients.Send(customer.Name)
RedirectToAction("Index");
}
在我的布局页面中,我有messagenotificationPartialView
$(function () {
// Reference the auto-generated proxy for the hub.
var chat = $.connection.chatHub;
// Create a function that the hub can call back to display messages.
chat.client.send = function (customerName) {
//add to a span
};
我不确定我的方向是否正确。这是正确的方法还是有其他方法可以实现这一点?这取决于具体情况。重定向到操作是否重定向到全视图加载?另外,这篇文章是由ajax调用还是由普通的页面文章调用?如果您已经在重定向过程中,您的集线器将中断并需要重新初始化,从而无法在此时与客户端通信。在这种情况下,这将无法工作。您需要在重定向之后建立连接,然后推送到客户机。这就像保存部分完成并重定向之后一样。我们需要调用$.connection.hub.start().done(函数(){chat.server.send(customer.Name);});从cshtml页面是的,但您很可能会遇到竞争条件,因为您的重定向操作将尝试调用尚未启动的集线器mvc中使用普通post通知的任何其他方式,从控制器post操作调用的方式