2010-02-17 1 views
5

매개 변수 사전에는 'System.Web.Mvc'메서드의 nullableable 'System.Int32'매개 변수 'appId'에 대한 null 항목이 들어 있습니다 .ContentResult CheckForInstaller (Int32) ''HLIT_TicketingMVC.Controllers.TicketController '에 있습니다. 선택적 매개 변수는 참조 유형, 널 입력 가능 유형 또는 선택적 매개 변수로 선언되어야합니다. 데이터 객체로 내장되어

function SubmitAjax(url, message, successFunc, errorFunc) { 
    $.ajax({ 
    type:'POST', 
    url:url, 
    data:message, 
    contentType: 'application/json; charset=utf-8', 
    dataType: 'json', 
    success:successFunc, 
    error:errorFunc 
    }); 
}; 

은 다음과 같습니다라는 메시지가 있음을 확인

var message="{'appId':"+application.val()+"}"; 

var message="{'appId':'"+application.val()+"'}"; 

:

var message={"appId":application.val()}; 

나는 또한 jsonified 문자열을 시도 홍보로 끝나고있다. oper int 값을 게시하려고합니다. 디버거 마우스는 가장 최근에 보여 주었다 : 나는 메소드 서명에서 매개 변수를 제거하면 그 안에 중단 점 않으며,

public ContentResult CheckForInstaller(int appId) 

, 그래서 그것은 서명 중 하나입니다 : {appId="6"}

컨트롤러의 메소드 서명은 어떤 종류의 속성을 필요로하거나 메시지가 제대로 구축되지 않았다고 믿습니다.

contentType: 'application/json; charset=utf-8', 

MVC는 int로 JSON을 구문 분석하지 않을 :

+0

int를 문자열로 변경할 때 어떤 결과가 나옵니까? public ContentResult CheckForInstaller (String appId)? – Pbirkoff

+0

해당 응용 프로그램 개체는 무엇입니까? 예상대로 작동하는지 확신합니까? –

+0

@ çağdaş - 예, 결과에 마우스를 올리면 예상 한 값이 표시됩니다. @ Pbirkoff - 그걸 시도하지는 않았지만 문제를 발견했습니다. 아래의 답변이 받아 들여졌습니다. – Maslow

답변

9

이 제거하려고 컨트롤러에 JSON을 보내는 것을 아마 생각합니다. 기본값은 application/x-www-form-urlencoded입니다.

+0

+1 멋지다. – Maslow

+0

그런 경우에는 호출 할 동작 메서드의 특수 경로를 정의해야합니까? 또는 자동으로 바인딩됩니까? –

+0

@LordCover : 아니요, 특별한 경로가 필요하지 않습니다. 그것은 다른 형태와 같이 묶여 있습니다. –

2

난 당신이

function SubmitAjax(url, message, successFunc, errorFunc) { 
    $.ajax({ 
    type:'POST', 
    url:url, 
    data:"appId=" + application.val(),//not sure where you get the value from in your current code 
    dataType: 'json', 
    success:successFunc, 
    error:errorFunc 
    }); 
}; 
+0

JSON에 대해 옳았 습니다만, 그의 '데이터'는 이미 정확합니다. –

+0

그런 경우에는 호출 할 동작 메서드의 특수 경로를 정의해야합니까? 또는 자동으로 바인딩됩니까? –

관련 문제