2

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

0 に答える 0