我的asp.net mvc视图中有以下Ajax.beginform
,其中ajax调用的结果将替换<div id= "searcharea">
,如下所示: -
@using (Ajax.BeginForm("Search", "Patient",
new AjaxOptions
{
HttpMethod = "GET",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "searcharea",
LoadingElementId = "progress2"
}))
{
<table >
<tr>
<th>
Searching By First Name (English) :-
</th>
<th>
<input type="text" name="firstname" />
</th></tr>
<tr>
<th>
Searching By Family Name (English) :-
</th>
<th>
<input type="text" name="familyname" />
</th></tr>
<input type="submit" value="Search " /></th><th></th></tr>
</table>
}
<div id = "progress2">
<img src= "@Url.Content("~/Content/images/Ajax-loader-bar.gif") ">
</div>
<p>
<div id= "searcharea">
</div>
所以在开始我虽然我只能执行一次搜索,因为<div id= "searcharea">
将替换为ajax调用的结果,并且在此之后它将不会是avilalbe,如果我尝试做anther ajax调用将不再有<div id= "searcharea">
替换结果。
但实际发生的是我能够毫无问题地进行多次搜索,这是否意味着InsertionMode.Replace
不会替换DOM元素,并且只会插入ajax调用的结果在这个DOM中,因为我无法理解如何多次引用DOM元素,即使它被我的第一个ajax调用替换了 ??? !!谁能解释这是怎么发生的?
BR
答案 0 :(得分:13)
你误解了InsertionMode.Replace
。它将替换内部您使用UpdateTargetId
指定的HTML元素,而不是元素本身。
与
相同$("#searcharea").html(newHTMLcontent);
由于你提到的原因,销毁它所使用的元素的插入模式不会非常有用:你只能使用它一次。