我最近关注了这个链接http://www.kevgriffin.com/why-should-asp-net-developers-consider-signalr-for-all-projects/开始在 ASP.NET MVC3 上使用 SignalR。
我想要做的是提供具有 SignalR 功能的部分视图。因此,当我使用 AJAX 加载局部视图时,我会在成功时调用以下函数:
function loadSuccess() {
var chat = $.connection.chatHub;
chat.writeMessage = function (msg) {
$("#messages").append("<li>" + msg + "</li>");
}
$("#buttonSubmit").click(function () {
chat.broadcastMessage($("#txtInput").val());
});
$.connection.hub.start();
}
麻烦的是它似乎没有运行(在加载局部视图后插入一个alert('hi')
just aftervar chat = ...
不会导致对话框出现)。但是,如果我在加载包含视图的整个 DOM 后运行这段 JavaScript(即,尚未加载部分视图),则脚本运行得非常好。
有人知道我为什么遇到这个问题吗?
编辑:当然,这就是我所说的 loadSuccess ...
@Ajax.ActionLink("chat", "Index", "Chat", ChatOpts)
...以及相应的ChatOpts
:
AjaxOptions ChatOpts = new AjaxOptions
{
UpdateTargetId = "placeholder",
OnSuccess = "loadSuccess"
};