ASP.NET MVC(POST):我的参数仅与JQuery脚本绑定,但不与Fiddler绑定

时间:2014-04-25 14:32:38

标签: asp.net-mvc asp.net-mvc-4 routes

我创建了一个ASP.NET MVC 4控制器,如下所示:

[Serializable]
public class apiArgument
{
    public string token { get; set; }
    public int language { get; set; }
    public string emailAddress { get; set; }
}

public class myController : ApiController
{
    [HttpPost]
    public HttpResponseMessage postSomething( [FromBody]apiArgument postedArgument )
    {
        ...
    }       
}

但是,当我使用Fiddler 4.4.7.1测试我的控制器时,会找到控制器和操作,但是使用空值实例化了PostedArgument。

User-Agent: Fiddler
Content-type: application/json; charset=utf-8
Host: 1.1.1.1:8081
Content-Length: 60

{ token:"test", language: 1036, emailAddress: "foo@bar.fr" }

我与AFNetworking 2.0有相同的结果

扼杀,当我使用JQuery脚本测试控制器时,对象被正确绑定:

<script>
    $(document).ready(function()
    {
        var request = $.ajax(
        {
            type: "POST",
            url: "http://1.1.1.1:8081/myController/postSomething",
            data: { token: 'test', language: 1036, emailAddress: 'foo@bar.fr' },
        });

        request.done(function (data) 
        {
            alert('posted!');
        });

        request.fail(function (jqXHR, textStatus) 
        {
            alert(textStatus);
        });

    });
</script>

所以,我认为我的路线配置很好。

我不明白有什么区别?

你知道为什么它不适用于Fiddler和AFNetworking吗?

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

错误来自[Serializable]属性。我删除了它,一切正常!