2013-03-27 40 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');