2

我在我的 MVC 视图中创建了一个 ajax.ActionLink,它用响应覆盖目标 div,而不是用响应填充它,这是没有意义的。这篇文章说它不应该覆盖父级,只有子级,http://aspnet.codeplex.com/workitem/8767

链接在这里:

@Ajax.ActionLink(domain.Domain, "Edit_Partial", "DomainNames", new { id = domain.DomainNameId }, new AjaxOptions { HttpMethod = "get", OnSuccess = "doAsyncCallBack()", UpdateTargetId = "editDomainTarget" })

这是加载前的div:

<div class="modal-body" id="editDomainModalBody">
<div id="editDomainTarget">Load body…&lt;/div>
</div>

这是加载后的 Div:

<div class="modal-body" id="editDomainModalBody">
<p>New Content</p>
</div>

这在设计上很糟糕。如果我更新目标然后想再次这样做,则目标不再在 DOM 中。jQuery ajax 不能这样工作。有没有人可以解决这个问题?谢谢!

剧情变厚了!

我决定,因为 ajax 是在目标 div 之上加载的,所以我只需将相同的 div 包装在我的控制器返回的内容周围——因此它将在往返过程中返回到 DOM。看看会发生什么:

<div class="modal-body" id="editDomainModalBody">
    <div id="editDomainTarget">
        <div id="editDomainTarget">Load body…&lt;/div>
    </div>
</div>

很好!有人吗?

4

1 回答 1

1

我解决了这个问题,但并不真正了解原因。如果您没有注意到(或者我没有正确解释),数据正在加载到一个 div 中,同时该 div 正在由 twitter 引导代码处理并显示在模式窗口中。我正在使用 twitter data- (data dash) 属性来处理这个问题。似乎在 jquery ajax 和 twitter 引导代码之间发生了奇怪的竞争条件,或者与数据 - 属性发生了一些冲突。

修复方法是将 ajax 数据加载到同一个 div 中,但从提供的 onComplete 或 onSuccess 回调启动模式窗口。

幸运的是 twitter bootstrap 提供了一个简单的 javascript 调用来启动你的模态窗口。

$('#yourModal').modal('show');

于 2013-03-28T09:08:15.377 回答