MVC 4 Ajax ActionLink覆盖目标div

时间:2013-03-27 23:48:58

标签: ajax asp.net-mvc target

我在我的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…</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>
好的天啊!任何人

1 个答案:

答案 0 :(得分:1)

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

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

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

$( '#yourModal')模态( '显示');