初始ajax调用后,我的asp.net MVC局部视图没有响应?

时间:2013-03-06 19:28:26

标签: asp.net-mvc jquery partial-views

我正在开发一个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);
            });
            });

这样的事情在我的控制器索引动作中:

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

       return View(model);

Razor Ajax.BeginForm,默认情况下为form0:

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

我在索引中的部分渲染:

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

这可以工作一次,但当我点击按钮开关在partialView中时,JavaScript变得无法响应。我猜它的索引视图没有用partialView重新加载...会不会有任何解决方法?

1 个答案:

答案 0 :(得分:1)

我使用.on()函数而不仅仅是@click(),正如@Sergey Akopov建议的那样。之后我又遇到了另一个问题,因为返回的数据是一个表,所以IE9给了我UI问题。

修复是在将表格标签注入DOM

之前从表标签中删除空格
                var expr = new RegExp('>[ \t\r\n\v\f]*<', 'g');
                table = table.replace(expr, '><');

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

这是'{3}}到'td'问题,在IE9中显示奇怪。