2013-03-27 4 views
2

내 MVC보기에서 ajax.ActionLink를 만들었습니다. 대상 div를 응답으로 덮어 쓰는 대신 응답을 작성하는 것이 바람직하지 않습니다. 여기MVC 4 Ajax ActionLink 덮어 쓰기 대상 div

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

: 여기

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

부하 전 사업부입니다 :이 문서가 여기에

http://aspnet.codeplex.com/workitem/8767 링크입니다, 부모 만이 자녀를 무시 안되는 것을 말한다 로드 후 Div :

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

이것은 잘못된 동작입니다. 대상을 업데이트했다가 다시 실행하려면 대상이 더 이상 DOM에 없습니다. jQuery 아약스는 이와 같이 작동하지 않습니다. 누구든지이 문제를 해결할 수 있습니까? 감사!

플롯이 두꺼워집니다!

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 부트 스트랩 코드에 의해 처리되고 모달 창에 표시됩니다. 나는 이것을 처리하기 위해 트위터 데이터 - (데이터 대시) 속성을 사용하고 있었다. jquery ajax와 twitter 부트 스트랩 코드 사이에 이상한 경쟁 조건이 있거나 데이터 속성과 충돌하는 것 같습니다.

해결 방법 ajax 데이터를 같은 div에로드하지만 제공된 onComplete 또는 onSuccess 콜백에서 모달 창을 시작하는 것입니다.

다행히도 트위터 부트 스트랩은 모달 창을 시작하는 간단한 자바 스크립트 호출을 제공합니다.

$ ('# yourModal'). 모달 ('show');