1

我正在开发一个 asp.net mvc 4 应用程序,并且我正在使用 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);
            });
            });

像这样的东西在我的控制器索引操作中:

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

       return View(model);

Razor Ajax.BeginForm,默认 id 为 form0:

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

我在索引中的部分渲染:

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

这工作一次,但是当我单击按钮开关在 partialView 中时,JavaScript 变得无响应。我猜它的索引视图没有用 partialView 重新加载……有什么办法解决吗?

4

1 回答 1

1

我使用了 .on() 函数,而不仅仅是 @Sergey Akopov 建议的 .click() 函数。在那之后我又遇到了另一个问题,因为返回的数据是一个表格,所以 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 回答