2013-03-27 122 views
2

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

这里是链接:

@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…</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…</div> 
    </div> 
</div> 

好greif!任何人?

回答

1

我解决了这个问题,但没有真正明白原因。如果你没有注意到(或者我没有正确解释),数据被加载到一个div中,同时由twitter引导程序代码处理并在模态窗口中显示。我正在使用twitter数据(数据短划线)属性来处理这个问题。似乎在jquery ajax和twitter bootstrap代码之间出现了一种奇怪的竞争状态,或者与数据属性有冲突。

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

幸运的是twitter引导提供了一个简单的JavaScript调用来启动你的模态窗口。 ('#yourModal')。modal('show');