通过(盒装)Syncfusion Ajax调用通知客户端

时间:2017-10-31 20:45:17

标签: ajax asp.net-core-2.0 syncfusion

我试图整合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。 你会怎么做?

1 个答案:

答案 0 :(得分:0)

我现在已经解决了这个问题,使用SignalR(目前是1.0.0-alpha2-final)并在客户端上看到了很好的视图,PNotify。 目前,它仅在客户端通过身份验证时才有效,如果需要匿名工作,您需要找到跟踪SignalR的连接ID的方法。

  1. 在带有Syncfusion Schedule组件的页面上,我连接到SignalR。

    let connection = new signalR.HubConnection(&#34; / signalr&#34;,{transport:signalR.TransportType.ServerSentEvents});

    connection.on(&#34;通知&#34 ;,     (标题,消息)=&gt; {         新的PNotify({             标题:标题,             文字:消息         });     }); connection.start();

  2. Hub(SignalRHub:Hub)为连接用户创建通知组:

    公共覆盖任务OnConnectedAsync() {     Groups.AddAsync(Context.ConnectionId,Context.User.Identity.Name);
        return base.OnConnectedAsync(); }

  3. 关联的控制器会注入IHubContext<SignalRHub> signalRHub

  4. 现在,在Syncfusion组件的Batch-Method中,它返回Json并且不能自己携带消息或通知,您可以通知用户:

    _signalRHub.Clients.Group(User.Identity.Name).InvokeAsync(&#34; Notify&#34;,&#34; A title&#34;,&#34; A message&#34;);

  5. 在我的特定情况下,我发送一个对象来控制PNotify的布局,动画和弹出持续时间(例如,允许复制/粘贴的例外时间更长) - 如您所愿。返回对象可以使用:

    完成
    _signalRHub.Clients.Group(User.Identity.Name).InvokeAsync("Notify", JsonConvert.SerializeObject(new { title = "Some Title", message = "notification", type = "notice"}););
    

    显然,connection.on("Notify" ......需要相应更改。

    我希望这很清楚,可能会帮助别人。