我试图整合Syncfusion的计划组件。该组件有一个URL适配器,用于连接控制器; Crud操作的GetData()和Batch()。 Batch有一个有效负载,指示要执行的操作。最后,Batch方法将重新查询数据库并发送与GetData()相同的数据。 不幸的是,没有内置的方法来通知客户端出现任何错误 - 是否存在异常,服务器端验证是否开始或类似。 我想做的是在compentent之外添加一个占位符来接收和显示服务器消息(无论是通知弹出窗口,还是其他什么。 由于我不能影响Ajax调用本身,我想知道我是否必须开始使用SignalR(据我所知仍然处于测试版.Net Core 2),或者我是否可能错过了更明显的内容?我已经阅读了很多关于推送通知等的内容 - 但这些并不是我所追求的,我认为它略高于顶部。
总结一下,我们说我有
<div id="messages"></div>
<div id="component">HereGoesTheScheduleWhichICantDoMuchWith</div>
现在在Batch()方法中,调用SendMessage会非常棒(&#34;抱歉,你不能这样做&#34;) - 理想情况下它们的文本会显示在消息中-div。 你会怎么做?
答案 0 :(得分:0)
我现在已经解决了这个问题,使用SignalR(目前是1.0.0-alpha2-final)并在客户端上看到了很好的视图,PNotify。 目前,它仅在客户端通过身份验证时才有效,如果需要匿名工作,您需要找到跟踪SignalR的连接ID的方法。
在带有Syncfusion Schedule组件的页面上,我连接到SignalR。
let connection = new signalR.HubConnection(&#34; / signalr&#34;,{transport:signalR.TransportType.ServerSentEvents});
connection.on(&#34;通知&#34 ;, (标题,消息)=&gt; { 新的PNotify({ 标题:标题, 文字:消息 }); }); connection.start();
Hub(SignalRHub:Hub)为连接用户创建通知组:
公共覆盖任务OnConnectedAsync()
{
Groups.AddAsync(Context.ConnectionId,Context.User.Identity.Name);
return base.OnConnectedAsync();
}
关联的控制器会注入IHubContext<SignalRHub> signalRHub
。
现在,在Syncfusion组件的Batch-Method中,它返回Json并且不能自己携带消息或通知,您可以通知用户:
_signalRHub.Clients.Group(User.Identity.Name).InvokeAsync(&#34; Notify&#34;,&#34; A title&#34;,&#34; A message&#34;);
在我的特定情况下,我发送一个对象来控制PNotify的布局,动画和弹出持续时间(例如,允许复制/粘贴的例外时间更长) - 如您所愿。返回对象可以使用:
完成_signalRHub.Clients.Group(User.Identity.Name).InvokeAsync("Notify", JsonConvert.SerializeObject(new { title = "Some Title", message = "notification", type = "notice"}););
显然,connection.on("Notify"
......需要相应更改。
我希望这很清楚,可能会帮助别人。