2009-11-09 7 views
4

제출 단추가있는 양식이있는 MVC 프로젝트가 있습니다. 양식 제출 이벤트를 가로채는 jquery 클라이언트 측 처리기를 추가했습니다. javascript 함수는 javascript없이 호출 된 동일한 MVC 작업을 호출합니다. Request.IsAjaxRequest가보기 또는 JSON 결과를 반환할지 여부를 결정하기 위해 호출되는 MVC 액션에서 Request.IsAjaxRequest가 false를 반환합니다.

$("form[action ='/List/CreateItem']").submit(
      function() { 
       $.post($(this).attr("action"), $(this).serialize(), function(response) { $("#results").html(response); }); 
       return false; 
      } 
      ); 

, 나는 테스트합니다. 내 문제는 Request.IsAjaxRequest false를 반환하는 경우에도 jquery 함수에서 호출중인 것을 알고 있습니다. (왜냐하면 내가 jquery 함수에 $ .post 줄을 주석으로 처리하고 그냥 거짓 라인을 반환한다면, 아무 일도 일어나지 않기 때문이다. 라인 주석을 해제하면 액션이 실행되지만 IsAjaxRequest는 false).

이 줄은 Request.IsAjaxRequest를 true로 설정해야합니까?

+1

$ .post *는'X-Requested-With'와'IsAjaxRequest'를 설정합니다 –

+0

이 게시물은 문제를 해결할 수 있습니다 : http://www.britishdeveloper.co.uk/2010/10/aspnet-mvc- isajaxrequest-jquery.html –

+1

아약스를 통해 여러 페이지 섹션을로드 할 때 Request.IsAjaxRequest()가 임의로 false를 반환하는 경우를 보았습니다. 나는'partial = 1' 매개 변수를 질의에 추가하기 시작했고'bool partial = Request.IsAjaxRequest() || ! string.IsNullOrEmpty (Request [ "partial"]);'컨트롤러에서 Ajax 호출의 일부 페이지와 전체 페이지를 볼 수 있도록합니다. –

답변

0

차이점이 무엇인지 알 수는 없지만 Fiddler (www.fiddlertool.com)와 같은 HTTP 프로파일 링 도구를 사용하여 두 호출 간의 가능한 차이점을 찾으십시오.

3

Request.IsAjaxRequest 속성은 X-Requested-With HTTP 헤더의 존재를 반영해야합니다. 이 헤더가 실제로 서버로 전송됩니까? James가 제안했듯이 Fiddler 또는 이와 유사한 프록시 서버 대안을 사용하여 프로필을 작성하십시오.

1

음 ... 사과드립니다. 나는 무엇이 변경되었는지는 모르지만, 이제 IsAjaxRequest가 true를 반환합니다. 위에 게시 한 코드와 현재 실행중인 코드를 비교하면 아무런 차이가 없습니다. 나는 이것에 대해 거짓을 반복적으로 얻었고, 지금은 반복적으로 사실이됩니다. 확실하게 나는 뭔가를 놓치고 있지만, 나는 그것을 보지 못한다.

+0

이것은 미친 짓이지만, 나에게도 똑같은 일이 일어났습니다. 잘. 어쨌든 나는 상관하지 않는다. –

관련 문제