我使用 ASP.NET MVC。我想将数据从控制器发送到集线器以发送给客户端。我在控制器中编写了这段代码:
public class SampleController : Controller
{
private readonly IHubContext<silgramHubs> _hubContext;
public SampleController(IHubContext<silgramHubs> hubContext)
{
_hubContext = hubContext;
}
public SampleController()
{
}
public ActionResult Index()
{
return View();
}
public ActionResult Save(long id = 0, string note = "")
{
NumberViewModel ml = new NumberViewModel { Iid = id, INote = note };
return RedirectToAction("OneMessage", ml);
}
public ActionResult OneMessage(NumberViewModel ml)
{
var Iid = (int)ml.Iid;
var Note = ml.INote;
_hubContext.Clients.All.sendPartialViewHtmlToClients(Iid, Note);
return PartialView(ml);
}
}
这是与我的中心相关的代码:
using System.Web.Mvc;
using System.Text;
using System.IO;
using testproject.Controllers;
namespace testproject.Hubs
{
public class SilgramHubs : Hub
{
public void sendPartialViewHtmlToClients(int id, string note)
{
Clients.All.addNewMessage(id, note);
}
}
}
StartUp.cs
:
using System;
using System.Threading.Tasks;
using Microsoft.AspNet.SignalR;
using Microsoft.Owin;
using Owin;
using Microsoft.AspNet.SignalR.SqlServer;
using Microsoft.Owin.Cors;
[assembly: OwinStartup(typeof(SadeMvc.Startup))]
namespace SadeMvc
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR("/signalr", new HubConfiguration
{
EnableJSONP = true, // if needed
EnableDetailedErrors = true // if needed
});
app.UseCors(CorsOptions.AllowAll);
app.MapSignalR();
}
}
}
这是我的客户端脚本,用于连接到集线器并接收消息:
$(function () {
var chat = $.connection.chatHubs;
chat.client.addNewMessage = function (id, note) {
console.log("Received message:", id, note);
};
$.connection.hub.start().done(function () {
console.log("SignalR hub connected");
});
});
不幸的是,下面一行中的操作符退出时没有任何错误。
_hubContext.Clients.All.sendPartialViewHtmlToClients( Iid, Note);
我想将参数从控制器发送到 ASP.NET MVC 中的集线器。请指导我如何做到这一点。
我有一个获取 hubContext 的替代建议。您可以按如下方式创建 hubcontext:
var hubcontext = GlobalHost.ConnectionManager.GetHubContext<SilgramHubs>();
hubcontext.Client.All.sendPartialViewHtmlToClients(Iid, Note);
我认为这有效。