Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Web Api未绑定到模型_C#_Json_Model Binding_Asp.net Web Api - Fatal编程技术网

C# Web Api未绑定到模型

C# Web Api未绑定到模型,c#,json,model-binding,asp.net-web-api,C#,Json,Model Binding,Asp.net Web Api,我试图将一个JSON对象发布到一个Web Api URL,但它没有绑定到模型 这似乎是同样的问题: 我尝试了他们所做的一切,但仍然不起作用。您可能注意到的一个区别是,我没有使用DataContract属性,但我认为它们不应该是必需的,并且在尝试它们时没有任何区别 public class MyModel { public int Id { get; set; } } Public class MyController : ApiController { public int S

我试图将一个JSON对象发布到一个Web Api URL,但它没有绑定到模型

这似乎是同样的问题:

我尝试了他们所做的一切,但仍然不起作用。您可能注意到的一个区别是,我没有使用
DataContract
属性,但我认为它们不应该是必需的,并且在尝试它们时没有任何区别

public class MyModel
{
    public int Id { get; set; }
}

Public class MyController : ApiController
{
    public int Save(MyModel myModel)
    {
        // myModel is always null
        return 0;
    }
 }

控制器方法中似乎缺少
[HttpPost]
属性。在上述情况下,这似乎不是严格要求的,也许这只是在发布原语时才需要

还有一点需要注意的是,如果您使用WebApi,我会使用更基于REST的语法,例如在控制器上使用方法Get、Post、Put ect,而不是命名方法

编辑:


你的帖子还有一个非常微妙的问题。标题行不能以
结尾
so
内容类型:application/json;字符集=utf-8
应该是
内容类型:application/json;charset=utf-8

这可能是一个编码问题。 我更改了编码,模型绑定成功完成

client.Encoding = Encoding.UTF8;

您的web.api路由看起来如何?尝试在fiddler中指定accept标头。在请求头中添加这一行:
Accept:“application/json”
Nope no,dice。我试了试,也试了试quotes@nemesv这实际上是不正确的,
Accept:
在您执行get时用于可接受的返回类型,而不是在post中使用内容类型来指定正文的类型。当我试图通过get请求时,它说不支持。我假设它默认为Post,因为它接受的对象可能很大。所有其他接口都默认为Get@JoshRusso我很确定你需要为post方法赋予属性,除非它们被命名为post。我试着根据你的评论给它命名,但它仍然表现出same@JoshRusso当我的VS Upgrade刚刚创建了一个新的示例web api项目时,我会试一试,然后再给你回复,但这根本不起作用。我想知道我的安装是否有问题