MVC에는 간단한 ajax 양식이 있습니다. AjaxOptions에는 OnComplete가 한 가지 일을하는 간단한 javascript 함수로 설정되어 있습니다. false를 반환합니다.OnComplete가있는 Ajax.BeginForm은 항상 페이지를 업데이트합니다.
@using (Ajax.BeginForm("Action", "Controller", new AjaxOptions { UpdateTargetId = "DivFormId", HttpMethod = "Post", OnComplete = "preventUpdate" }))
function preventUpdate(xhr) {
return false;
}
문제는 해당 페이지가 이미 업데이트 된 것입니다. 예 : 한 경우 컨트롤러는 포스트 백 이후에 부분 뷰를 반환하고, 다른 경우에는 일부 Json 객체를 반환합니다. 부분 뷰가 반환 될 때 페이지를 업데이트하고 json이 반환 될 때 대화 상자 창을 표시하려고합니다. 안타깝게도 json이 반환되면 OnComplete 함수가 false를 반환하는 경우에도 MSDN에서 설명한대로 페이지를 지우고 (json으로 업데이트) 페이지 업데이트를 취소하려면 JavaScript 함수에서 false를 반환합니다.
수신 된 응답에 따라 페이지 업데이트를 방지하는 방법은 무엇입니까?
감사합니다.
----- 업데이트 -------
지금까지 해결책을 찾았습니다. UpdateTargetId를 지정하지 않으면 원하는 응답으로 수동으로 수행 할 수 있습니다. 그러나 여전히 false를 반환하면 문서화 된 동작이 아닙니다.
는 아마도이 도움이됩니다, 또한 (이 경우가 처음 코멘트 http://stackoverflow.com/a/1357151/985284 –
보고 그러나 확실히, 나는이 두 가지 방법을 시도했다.) 이것은 OnBegin, OnComplete와 같은 이벤트로 Ajax.BeginForm을 처리하는 MS 처리입니다. MSDN 문서에 따라 OnComplete는 false를 반환하여 중지 할 수 있어야합니다. –