最近、このリンク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"
};