2011-11-02 7 views
0

나는 아래의 해결책을 시도하지 않고 시도했다. 컨트롤러 메서드 MvcAction에서 prs 매개 변수는 항상 null입니다. 아래는 컨트롤러 메서드를 호출하는 데 사용하는 코드입니다. 이 같은Ajax로 액션 메소드 호출

function getPerson() { 
    var jFirstName = '@Model.Person.FirstName'; 
    var jLastName = '@Model.Person.LastName'; 
    return { FirstName: jFirstName, LastName: jLastName }; 
} 

var person = getPerson(); 
var jsonPerson = JSON.stringify(person); 

$.post('@Url.Action("MvcAction", "MvcXontroller")', { prs : jsonPerson }, 
function(data) { 
    .... 
}); 

동작 방법의 모양을

public void MvcAction(Person prs) 
{ 

} 
+0

피들러 (Fiddler) 또는 유사한 도구를 사용하는 경우'$. post '액션의 본문에서 무엇이 전달되는 것을 볼 수 있습니까? 요청 본문을 게시하십시오. – counsellorben

답변

1

data가 null 또는 라우팅 엔진이 MvcAction 방법을 찾을 수 없기 때문에 당신은 404 오류를 얻고있다?

내 생각 엔 반환 유형이 void이므로 결과는 항상 null입니다. 다시 데이터를 클라이언트로 반환하려면 반환 유형을 JsonResult 또는 이와 비슷한 형식으로 변경하십시오.

UPDATE

이처럼 $.post() 전화를 업데이트하십시오 :

$.post('@Url.Action("MvcAction", "MvcXontroller")', JSON.stringify({ prs : person}), 
    function(data) { 
     .... 
    }); 

은 또한 사람이 처음이자 마지막 이름에 값을 유효한 제이슨 객체가 있다는 $.post 호출하기 전에 확인합니다.

+0

실제 코드에서는 void가 아니지만 Console.WrtileLine (prs)을 수행하면 중요하지 않습니다. 나는 prs가 null이 아니길 바래. –

+0

컨트롤러 메소드'MvcAction'에서'prs'가 항상 null이라는 말입니까? 나는 당신의 질문을 완전히 이해하려고 노력하고 있습니다. – arb

+0

예, 항상 null입니다. 분명하지 않아 ? 나는 내 모델에서 2 개의 값을 얻고이 2 개의 값 (FirstName, LastName)을 가진 뷰에서 내 작업에 인수를 보낼 유형 (Person)을 생성해야한다. –