C# 我能';t定义“;“客户”;信号员
我开始与signalR合作,但我有一个错误(我在网上看到了几个答案,但没有一个对我有帮助),我有以下文件: GenteHub.csC# 我能';t定义“;“客户”;信号员,c#,asp.net-mvc,signalr,C#,Asp.net Mvc,Signalr,我开始与signalR合作,但我有一个错误(我在网上看到了几个答案,但没有一个对我有帮助),我有以下文件: GenteHub.cs using System; using System.Collections.Generic; using System.Linq; using System.Web; using Microsoft.AspNet.SignalR; using Microsoft.AspNet.SignalR.Hubs; name
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;
namespace EjemploSignal
{
public class GenteHub:Hub
{
[HubMethodName("noti")]
public static void llenarDatos()
{
IHubContext context = GlobalHost.ConnectionManager.GetHubContext<GenteHub>();
context.Clients.All.updateDatos();
}
}
}
var notificationHub = $.connection.genteHub;
$.connection.hub.start().done(function () {
cargarDatos();
});
$.notificationHub.client.updateDatos = function () {
cargarDatos();
};
function cargarDatos() {
$.ajax({
url: "Home/lista",
method: "GET",
async: false,
dataType: "json",
success: function (respuesta2) {
console.log("Respuesta", respuesta2);
}
});
}
<script src="~/Scripts/jquery-3.3.1.js"></script>
<script src="~/Scripts/jquery.signalR-2.3.0.js"></script>
<script src="~/signalr/hubs"></script>
<script src="~/Scripts/enlace.js"></script>
<script src="~/Scripts/modernizr-2.6.2.js"></script>
<script src="~/Scripts/bootstrap.min.js"></script>
Layout.html(脚本参考)
这取决于文件hub
未生成的原因,因为:
- 文件的正确顺序没有被放置(当我有它们时 顺序为“jquery、jquery信号、hub”)
- 它必须放置或不放置符号(~)(坏的是我 安装并卸下它,错误仍然存在)
$。
$.notificationHub.client.updateDatos = function () {
cargarDatos();
};
为了避免第一个错误,它可以工作,但是当我加载页面时,cargarDatos()
from$.connection.hub.start().done(函数()
正确部署,但是当我在数据库中添加新记录时,什么也没有发生
我在这段代码中犯了什么错误?应该是
notificationHub.client
而不是$.notificationHub.client
。因此,请按如下方式编写enlace.js
代码:
var notificationHub = $.connection.genteHub;
$.connection.hub.start().done(function () {
cargarDatos();
});
notificationHub.client.updateDatos = function () { // not $.notificationHub, its notificationHub
cargarDatos();
};
function cargarDatos() {
$.ajax({
url: "/Home/lista",
method: "GET",
contentType: "application/json",
success: function (respuesta2) {
console.log("Respuesta", respuesta2);
}
});
}
[HttpPost]
public ActionResult YourAddRecordMethod(YourRecord yourRecord)
{
// Your adding record code here
HubContext context = GlobalHost.ConnectionManager.GetHubContext<GenteHub>();
context.Clients.All.updateDatos();
}
当我在数据库中添加一条新记录时,什么也没有发生
每当您将记录添加到数据库中时,它不会自动调用。您必须在将记录添加到数据库后手动调用它,如下所示:
var notificationHub = $.connection.genteHub;
$.connection.hub.start().done(function () {
cargarDatos();
});
notificationHub.client.updateDatos = function () { // not $.notificationHub, its notificationHub
cargarDatos();
};
function cargarDatos() {
$.ajax({
url: "/Home/lista",
method: "GET",
contentType: "application/json",
success: function (respuesta2) {
console.log("Respuesta", respuesta2);
}
});
}
[HttpPost]
public ActionResult YourAddRecordMethod(YourRecord yourRecord)
{
// Your adding record code here
HubContext context = GlobalHost.ConnectionManager.GetHubContext<GenteHub>();
context.Clients.All.updateDatos();
}
[HttpPost]
公共行动结果YourAddRecordMethod(YourRecord YourRecord)
{
//您正在此处添加记录代码
HubContext context=GlobalHost.ConnectionManager.GetHubContext();
context.Clients.All.updateDataos();
}
无法读取未定义的属性“client”
。那么您在哪里访问客户端?$.notificationHub.client
…所以$。notificationHub
未定义。您是指notificationHub
吗?@FrankerZ是的,在那一行中是第一个错误。我以那种方式拥有.js文件,但cargarDatos()
在start中,控制台中没有显示任何内容。我没有任何保存记录的方法,我直接在SQL SERVER(SSMS)中添加了一条新记录,希望在SSMS中添加一条新记录时,集线器可以更新或执行我期望的操作(同样,我不知道这是否可行)不,不!当您使用SSMS将记录添加到SQL server中时,Signal怎么知道?“我有这样的.js文件,但开始中的cargarDatos()在控制台中没有显示任何内容”-您能给我团队查看器id并通过检查吗?1 063 653 658/5211