Asp.net mvc 是否可以从返回默认视图的ActionResult调用信号器

Asp.net mvc 是否可以从返回默认视图的ActionResult调用信号器,asp.net-mvc,signalr,Asp.net Mvc,Signalr,我在mvc中有一个POST方法,它保存了一个客户,并在默认情况下重定向到索引视图 现在我想在创建客户时包含一个通知。我已经尝试了基本的信号器实现,但我不确定如何从ActionMethod调用信号器,以便在客户端中反映出来 我的困惑是重定向到Index并使用signar调用客户机可以用相同的Acton方法编写,或者在保存客户机后需要使用客户机的其他方法 代码如下: [HttpPost] public ActionResult SaveCustomer(Customer customer) {

我在mvc中有一个POST方法,它保存了一个客户,并在默认情况下重定向到索引视图

现在我想在创建客户时包含一个通知。我已经尝试了基本的信号器实现,但我不确定如何从ActionMethod调用信号器,以便在客户端中反映出来

我的困惑是重定向到Index并使用signar调用客户机可以用相同的Acton方法编写,或者在保存客户机后需要使用客户机的其他方法

代码如下:

[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操作调用的方式