Jquery 在IE中将项目动态添加到模型时使用$.ajax的问题';s系列

Jquery 在IE中将项目动态添加到模型时使用$.ajax的问题';s系列,jquery,ajax,asp.net-mvc,internet-explorer,Jquery,Ajax,Asp.net Mvc,Internet Explorer,我希望我能恰当地表达这个问题。我正在审阅关于如何动态地将项添加到模型集合中并仍然保留绑定的各种文章。我主要关注以下两个方面: MVC系列第1部分:动态添加项目第1部分: 绑定到列表的模型: 在我的场景中,我有一个简单的输入类型button,它调用对控制器操作的jQuery ajax调用,该操作返回一个PartialView,然后我简单地将它附加到我的DOM中。在这个PartialView中,我调用了HtmlHelper扩展函数Html.BeginCollectionItem(基于第一篇文章中

我希望我能恰当地表达这个问题。我正在审阅关于如何动态地将项添加到模型集合中并仍然保留绑定的各种文章。我主要关注以下两个方面:

MVC系列第1部分:动态添加项目第1部分:

绑定到列表的模型:

在我的场景中,我有一个简单的输入类型button,它调用对控制器操作的jQuery ajax调用,该操作返回一个
PartialView
,然后我简单地将它附加到我的DOM中。在这个
PartialView
中,我调用了HtmlHelper扩展函数
Html.BeginCollectionItem
(基于第一篇文章中的演示),它只需插入必要的隐藏字段并适当地更新Html前缀。
PartialView
cshtml文件如下所示:

@using Project.MyExtensions
@model Models.MyModel

<div class="item">
@using (Html.BeginCollectionItem("CollectionItem"))
{
    @Html.HiddenFor(model => model.ID)
    <div class="row">
        <div class="six columns">
            @Html.LabelFor(model => model.Name, "Name")
            @Html.TextBoxFor(model => model.Name, null, new {@class = "u-full-width"})
        </div>

        <div class="six columns">
            @Html.LabelFor(model => model.HostName, "Hostname")
            @Html.TextBoxFor(model => model.HostName, null, new {@class = "u-full-width"})
        </div>
    </div>

    <div>
        @Html.LabelFor(model => model.Description, "Description")
        @Html.TextAreaFor(model => model.Description, new {@class = "u-full-width"})
    </div>

    <div class="close">Remove</div>
}
</div>
虽然如果我使用
@Ajax.ActionLink
助手函数,IE会按预期工作,而且
PartialView
中的HtmlHelper扩展方法似乎每次都会按预期调用:

@Ajax.ActionLink("Add New Item", "NewItem", new AjaxOptions
{
    HttpMethod = "GET",
    InsertionMode = InsertionMode.InsertBefore,
    UpdateTargetId = "item-list"
})
在Mozilla中,两种方法都能按预期工作,但在IE中,我只能通过第二种方法看到预期的结果。有人能解释一下这里的区别吗


更新:我注意到,在IE中,如果打开“Inspect Element”调试器工具,我就能够一致地(通过$.ajax方法)调用HtmlHelper扩展方法。

我能够在IE中通过修改$.ajax调用来指定
缓存:false
。这似乎表明浏览器缓存会影响IE中创建的部分(我没想到会是这样)。它还解释了为什么打开调试器会导致$.ajax调用的行为不同,因为我认为这会强制禁用缓存


如果有人有任何进一步的信息,请在下面发表评论,但现在我将结束这个问题。

我可以通过修改$.ajax调用来指定
缓存:false
,从而在IE中实现这一点。这似乎表明浏览器缓存会影响IE中创建的部分(我没想到会是这样)。它还解释了为什么打开调试器会导致$.ajax调用的行为不同,因为我认为这会强制禁用缓存

如果有任何人有任何进一步的信息,请在下面评论,但现在我将结束这个问题

@Ajax.ActionLink("Add New Item", "NewItem", new AjaxOptions
{
    HttpMethod = "GET",
    InsertionMode = InsertionMode.InsertBefore,
    UpdateTargetId = "item-list"
})