2012-10-06 6 views
0

현재 WebAPI 용 Pluralsight 교육을 진행 중입니다. 몇 가지 문제가 있습니다. (예제 다운로드는 작동하지 않으므로 도움이되지 않습니다. 코스가 베타 버전으로 생성되었으며 사용하고 있습니다. .Net 4.5와의 최종 버전). 나는 다음과 같은 HTML과 매우 간단한보기를 만든 : 양식 제출로 전환 될 때 발생하도록되어 무엇WebAPI가 직렬화되지 않음

<form onsubmit="return submitCourse();"> 
    <input type="text" name="name" id="name" /> 
    <input type="submit" value="Create Course" /> 
</form> 
<h1 id="msg"></h1> 
<script> 

//1: have form - get values from form - send to API as json 
//2: use form values 

function submitCourse() { 

    //$.ajax({ 
    // url: '/api/courses', 
    // type: 'POST', 
    // dataType: 'json' 
    //}); 

    $.ajax({ 
     url: '/api/courses/', 
     type: 'POST', 
     dataType: 'json',    
     success: function (newCourse) { 
      var msg = 'New course id = ' + newCourse.id; 
      $('#msg').text(msg); 
     } 
    }); 

    return false; 
} 

</script> 

스크립트가 먼저 실행하고 양식 데이터는 AJAX 호출을 통해 나를 위해 전송된다.

public Course Post(Course newCourse) 
    { 
     newCourse.id = _courses.Count; 
     _courses.Add(newCourse); 

     //TODO : return 201 
     return newCourse; 
    } 

다양한 도구를 통해 파고

, 나는 위의 스크립트를 전송하지 않는 것 발견 : Post 메소드가 내 컨트롤러에 당한다 때이 발생하고있어 문제는 "newCourse"매개 변수는 항상 null입니다 데이터 (내용 길이가 0), 그러나 왜 (WebAPI 및 jQuery의 $ .ajax() 호출 새로) 이유를 알아낼 수가 없어. 나는 명시 적으로 $ .ajax() 호출 내에서 "data"옵션을 사용하여 폼의 값을 설정하려고 시도했다. (예 : 데이터 : { 'name': $ ('name').()})하지만 그 중 많은 것도하지 않았습니다. 콘텐츠 길이가 변경된 것으로 보였으 나 (이유는 확실하지 않음) 값은 아직 비 직렬화되지 않았습니다.

팁이 있습니까? 나는 어디에서 시작해야하는지 알기 위해이 두 가지 기술에 너무 초보적이다.

답변

1

데이터 옵션을 $ .ajax() 안에 사용하여 API에 데이터를 게시해야합니다. data : $ ("# CourseForm"). serialize()를 사용하면 폼에 'CourseForm'이라는 id를 지정하고 폼의 입력 필드 이름이 Course의 속성 이름과 일치하는지 확인하여 바인딩 할 수 있습니다. 작업.

+0

완벽하게 작동했습니다. 감사합니다. – RubyHaus

관련 문제