如何将SignalR服务器响应与状态验证逻辑关联并触发false状态?
实现SignalR响应与状态验证视图的动态关联
完全可以实现SignalR服务器响应与状态验证逻辑的关联,具体步骤如下:
1. 调整HTML结构,添加可识别容器
给原状态视图外层添加带ID的容器,保留服务器端渲染的初始状态,方便JavaScript定位修改:
<div id="statusContainer"> Status: @if (Model.Connected == false) { <img src="/icons/wifi_off.svg" height="45" width="45" /><span>Offline, brak połączenia z portem COM</span> } else { <img src="/icons/wifi_on.svg" height="45" width="45" /><span>Online, połączono z portem COM</span> } </div>
2. 修改SignalR前端响应逻辑
不再直接赋值简单文本,而是根据服务器返回的状态值,生成与原逻辑一致的HTML内容并替换容器:
场景一:服务器返回布尔值(true=在线,false=离线)
switch(informations[0]){ case "Status": const statusContainer = document.getElementById('statusContainer'); const isConnected = informations[1]; if (!isConnected) { statusContainer.innerHTML = 'Status: <img src="/icons/wifi_off.svg" height="45" width="45" /><span>Offline, brak połączenia z portem COM</span>'; } else { statusContainer.innerHTML = 'Status: <img src="/icons/wifi_on.svg" height="45" width="45" /><span>Online, połączono z portem COM</span>'; } break; }
场景二:服务器返回状态字符串(如"Offline"/"Online")
switch(informations[0]){ case "Status": const statusContainer = document.getElementById('statusContainer'); const status = informations[1]; if (status === "Offline") { statusContainer.innerHTML = 'Status: <img src="/icons/wifi_off.svg" height="45" width="45" /><span>Offline, brak połączenia z portem COM</span>'; } else { statusContainer.innerHTML = 'Status: <img src="/icons/wifi_on.svg" height="45" width="45" /><span>Online, połączono z portem COM</span>'; } break; }
说明
初始状态由服务器端的Model.Connected渲染,后续SignalR推送状态变更时,前端会实时替换状态容器的内容,完全匹配你原有的状态验证逻辑显示效果。
内容的提问来源于stack exchange,提问作者Software Architect
相关产品推荐
相关产品推荐

