1

私はasp.net mvc 4アプリケーションに取り組んでおり、IndexビューのテーブルにPartialViewを使用しています。最初の ajax 呼び出しを行った後、リクエストは成功し、それに応じて UI が更新されます。しかし、もう一度更新しようとすると、JavaScript がクリック イベントに応答しません。

これは典型的なものですか?

AJAX 呼び出し:

        $("#button").click(function(){
           $.ajax({
                url: 'url',
                type: "POST",
                data: $("#form0").serialize()
            }).done(function (allData) {

                $("#mypartialId").html(allData);
                ResizeContent();

            }).fail(function (jqXHR, textStatus) {
                alert("Request failed: " + textStatus);
            });
            });

このようなものは、私のコントローラの Index アクションにあります:

        if(Request.IsAjaxRequest())
        {
            return PartialView("_PartialView", model);
        }

       return View(model);

Razor Ajax.BeginForm には、デフォルトで form0 の ID があります。

           @using (Ajax.BeginForm("Index", "MyController",
                       new AjaxOptions
                           {
                               HttpMethod = "POST",
                               UpdateTargetId = "mypartialId"
                           }))

インデックスでの私の部分的なレンダリング:

    <div id="mypartialId">
        @{Html.RenderPartial("_PartialView", Model);}
    </div>

これは一度だけ機能しますが、partialView のボタン スイッチをクリックすると、JavaScript が応答しなくなります。私は、IndexビューがpartialViewでリロードしないことで何かを推測しています...それを回避する方法はありますか?

4

1 に答える 1

1

@Sergey Akopovが提案したように、.click()だけでなく.on()関数を使用しました。その後、返されるデータがテーブルだったため、別の問題が発生したため、IE9 で UI の問題が発生していました。

修正は、テーブルタグから空白を削除してから、DOM に挿入することでした。

                var expr = new RegExp('>[ \t\r\n\v\f]*<', 'g');
                table = table.replace(expr, '><');

                $("#mypartialId").html(table);

これは、IE9 で異常に表示される「td」の問題へのリンクです。

于 2013-03-07T18:46:56.013 に答える