ASP.Net MVC中的自AJAX更新部分视图/控制器和复制div

pup*_*eno 11 ajax asp.net-mvc partial-views

我在MVC中有一个局部视图,如下所示:

<div id="comments">
    ...
</div>
Run Code Online (Sandbox Code Playgroud)

在div中,有一个表单使用AJAX调用控制器并返回相同的局部视图.问题是调用视图的结果替换了div的内容,而不是整个div,我最终得到:

<div id="comments">
    <div id="comments">
        ...
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我在ASP.Net MVC和AJAX中的一周经验可以考虑的唯一解决方案是将div放在局部视图之外并使局部视图仅包含内部部分,但是表单将引用外部的id查看表单所在的位置,打破了我留在那里的小封装.有没有更好的解决方案?

Jer*_*oen 6

.NET MVC 3附带的不显眼的Ajax库使用基于jQuery.ajax的四个回调的回调.但是,Ajax.BeginForm方法中的InsertionMode = InsertionMode.Replace 不会导致调用jQuery的replaceWith.相反,.html(数据)用于替换目标元素的内容(而不是元素本身).

我在我的博客上描述了这个问题的解决方案:http: //buildingwebapps.blogspot.com/2011/11/jquerys-replacewith-and-using-it-to.html


tva*_*son 3

您使用的是 AjaxHelper.Form 还是 jQuery。如果您使用 jQuery,您是否尝试过使用ReplaceWith()?使用 AjaxHelper 您正在使用AjaxOptions { InsertionMode = InsertionMode.Replace }吗?我认为使用其中任何一个都可以用部分视图的结果替换整个 DIV。