【发布时间】:2016-12-26 11:30:52
【问题描述】:
我看到了一个具有完全相同问题的主题,并且我已经按照那里的答案进行了操作,但仍然无法完成这项工作,希望您能告诉我我做错了什么。我正在尝试从集线器向客户端发送对象列表(用户名),但我得到的输出是 [object Object]。这是我的班级,里面只有 1 个属性:
public class WaitingUser
{
public string waitingUsrName{ get; set; }
}
在我创建列表的 hub 类中,我尝试将 static 修饰符更改为 public,但结果相同:
static List<WaitingUser> WaitingUseresList = new List<WaitingUser>();
我有一个带有 try/catch 语句的方法,我在 catch 中放置了一些虚拟数据进行测试。已经调试过了,catch 被正确调用了,我的对象也在列表中:
catch
{
// WaitingUseresList.Add(new WaitingUser { waitingUsrName = userName });
WaitingUseresList.Add(new WaitingUser { waitingUsrName = "John" });
WaitingUseresList.Add(new WaitingUser { waitingUsrName = "Mike" });
WaitingUseresList.Add(new WaitingUser { waitingUsrName = "Steven" });
Clients.All.UpdateWaitingUsrList(WaitingUseresList);
}
在我的客户端我有:
objHub.client.UpdateWaitingUsrList = function (WaitingUseresList) {
$('.WaitingUsrs').val('');
var list = WaitingUseresList;
for (var i = 0; i < list.length; i++) {
$('.waitingUsrs').append('<li>' + list[i] + '</li>');
}
var height = $('.waitingUsrs')[0].scrollHeight;
$('.waitingUsrs').scrollTop(height);
}
输出是:
- [对象对象]
- [对象对象]
- [对象对象]
我已经按照other topic 使其工作,但仍然无法弄清楚。所以我改变了我的 catch 语句:
catch
{
// WaitingUseresList.Add(new WaitingUser { waitingUsrName = userName });
WaitingUseresList.Add(new WaitingUser { waitingUsrName = "John" });
WaitingUseresList.Add(new WaitingUser { waitingUsrName = "Mike" });
WaitingUseresList.Add(new WaitingUser { waitingUsrName = "Steven" });
string list = Newtonsoft.Json.JsonConvert.SerializeObject(WaitingUseresList);
Clients.All.UpdateWaitingUsrList(list);
Clients.Caller.NoExistAdmin();
}
和我的客户端:
objHub.client.UpdateWaitingUsrList = function (list) {
$('.WaitingUsrs').val('');
var waitingList = list;
for (var i = 0; i < waitingList.length; i++) {
$('.waitingUsrs').append('<li>' + list[i] + '</li>');
}
var height = $('.waitingUsrs')[0].scrollHeight;
$('.waitingUsrs').scrollTop(height);
}
输出变为this。更好,但仍然不是我所期望的。我究竟做错了什么?提前致谢!
【问题讨论】:
标签: asp.net-mvc signalr signalr-hub signalr.client