4

我的 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,如果我尝试做另一个 ajax 调用,将不会更多<div id= "searcharea">替换结果。

但实际发生的是,我能够毫无问题地进行多次搜索,这是否意味着InsertionMode.Replace不会替换 DOM 元素,它只会在这个 DOM 中插入 ajax 调用的结果,因为我可以不明白我怎么能多次引用一个 DOM 元素,即使它已经被我的第一个 ajax 调用替换了???!!谁能解释这是怎么发生的?BR

4

1 回答 1

13

你误会了InsertionMode.Replace。它将替换您指定的 HTML 元素中的所有内容UpdateTargetId,而不是元素本身。

这是一样的

$("#searcharea").html(newHTMLcontent);

由于您提到的原因,破坏它所使用的元素的插入模式不会很有用:您只能使用它一次。

于 2012-05-01T03:12:56.143 回答