我最近关注了这个链接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')
之后插入var chat = ...
不会导致在加载局部视图后显示对话框)。但是,如果我在加载包含视图的整个DOM时运行这段JavaScript(即,部分视图尚未加载),则脚本运行完全正常。
有人知道为什么我会遇到这个问题吗?
编辑:当然,这就是我调用loadSuccess的方式......
@Ajax.ActionLink("chat", "Index", "Chat", ChatOpts)
...以及相应的ChatOpts
:
AjaxOptions ChatOpts = new AjaxOptions
{
UpdateTargetId = "placeholder",
OnSuccess = "loadSuccess"
};