2012-10-06 50 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调用给我发送。我现在遇到的问题是,当Post方法在我的控制器被击中时,“newCourse”参数总是空:

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

     //TODO : return 201 
     return newCourse; 
    } 

挖通过各种工具,我发现上面的脚本似乎并没有被发送数据在所有(内容长度为0),但我似乎无法弄清楚为什么(新的WebAPI和jQuery的$ .ajax()调用)。我尝试使用$ .ajax()调用中的“数据”选项(如下所示:data:{'name':$('#name')明确设置调用正文的形式值。 ()}),但那也没有做太多。内容长度似乎改变(到5,不知道为什么),但值仍然没有被反序列化。

任何提示?我对这两种技术都很陌生,不知道从哪里开始。

回答

1

您需要使用$ .ajax()中的数据选项将数据发布到API。您可以使用data:$(“#CourseForm”)。serialize(),如果您将ID'CourseForm'赋予表单并确保表单中输入字段的名称与Course的属性名称匹配,以绑定到工作。

+0

完美的工作,谢谢! – RubyHaus

相关问题