Asp.net mvc 4 MVC4WebAPI格式化程序弄乱了我的实体

Asp.net mvc 4 MVC4WebAPI格式化程序弄乱了我的实体,asp.net-mvc-4,asp.net-web-api,model-binding,azure-table-storage,Asp.net Mvc 4,Asp.net Web Api,Model Binding,Azure Table Storage,我正在使用MVC4WebAPI将几个实体发布到Azure表存储。我相信它使用的是格式而不是模型绑定,因为这些是复杂类型(我编写的类),它们被发送到主体中的API,而不是URI 除了一个(称为Comment的类)指向其他实体(它具有其他实体的属性)之外,这对所有实体都很有效。我在主体中传递到API的JSON有2个属性,其中包含其他实体 对于Azure表存储,每个实体都有一个RowKey属性。我注意到,一旦我的控制器从请求体中的JSON构建实体(使用MVC4格式),它的RowKey值就错误了——它实

我正在使用MVC4WebAPI将几个实体发布到Azure表存储。我相信它使用的是格式而不是模型绑定,因为这些是复杂类型(我编写的类),它们被发送到主体中的API,而不是URI

除了一个(称为Comment的类)指向其他实体(它具有其他实体的属性)之外,这对所有实体都很有效。我在主体中传递到API的JSON有2个属性,其中包含其他实体

对于Azure表存储,每个实体都有一个RowKey属性。我注意到,一旦我的控制器从请求体中的JSON构建实体(使用MVC4格式),它的RowKey值就错误了——它实际上具有我提到的两个属性中引用的一个实体的值。另一个实体的RowKey属性也包含在JSON中——因此JSON有3个RowKey,但它们都正确地位于JSON中,成为正确实体的一部分。格式化程序似乎读错了

我无法保存此评论。我不认为关键问题是原因,因为表存储服务不应该关心(没有验证),但我相信这只是Azure表存储服务无法解决实体问题的一部分。有没有人遇到过类似的MVC格式问题

谢谢

编辑 我忘了提到——为了测试,如果我在格式化程序中断的同一个控制器方法中实例化一个新的注释实体,它会很好地保存。因此,我相当确定问题发生在WebApi解析传递给控制器Post方法的实体时

添加JSON和模型:

{
  "PartitionKey": "US",
  "RowKey": "com-dd1920ed-2e87-4f51-a6d1-32fa692aadae",
  "AboutKey": "US|per-fb1de571-7142-47c8-bdb3-0eddd59f6ccd",
  "FromPersonKey": "US|per-4c3261d8-3b1a-4bd4-8850-4d769cfbd7ef",
  "CommentText": "Testing Create.",
  "FromPerson": {
    "PartitionKey": "US",
    "RowKey": "per-4c3261d8-3b1a-4bd4-8850-4d769cfbd7ef",
    "FirstName": "John",
    "LastName": "Smith",
    "NickName": null,
    "FullName": "John Smith",
    "Description": null,
    "ImageLocation": null,
    "Region": "US"
  },
  "About": {
    "PartitionKey": "US",
    "RowKey": "per-fb1de571-7142-47c8-bdb3-0eddd59f6ccd",
    "FirstName": "George",
    "LastName": "Martin",
    "NickName": "Cowboy Hat",
    "FullName": "George Martin",
    "Description": "Ten gallons big.",
    "ImageLocation": null,
    "Region": "US"
  },
  "CommentDateTime": "2012-08-25T13:41:09.8899185Z"
}
模型(从JSON绑定错误,从调试本地窗口发布)。这里您会注意到的另一个问题是“About”属性为null。这应该是一个Person对象,但Json.Net似乎没有解析这个属性,可能是因为它是一种接口类型而不是类。显然,这里是一个人在JSON的属性中被传递,但它可能是其他的东西,因此这里使用了一个接口:

comment         {Classes.Comment}                           Classes.Comment  
About           null                                        Classes.ICommentable  
AboutKey        US|per-fb1de571-7142-47c8-bdb3-0eddd59f6ccd string  
CommentDateTime {1/1/0001 12:00:00 AM}                      System.DateTime  
CommentText     Testing Create.                             string  
FromPerson      {Classes.Person}                            Classes.Person  
FromPersonKey   US|per-4c3261d8-3b1a-4bd4-8850-4d769cfbd7ef string  
PartitionKey    US                                          string  
RowKey          per-fb1de571-7142-47c8-bdb3-0eddd59f6ccd    string  

你能在错误绑定后发布实际的样本JSON和模型吗?当然-刚刚发布了JSON,模型就来了…有人吗??我对MVC格式不够熟悉,无法理解为什么JSON没有被正确读取。你有没有找到解决方案?我也有同样的问题。不过,我先用EF和DB,在Android手机中直接从光标接收DB的同步数据,所以我没有注意到我显然无法决定时间戳应该命名为“create_ts”还是“created_ts”“一旦我下定决心,世界又一次变得明亮、闪亮和崭新。我的存在是为了服务,如果只是为了给别人一个教训。。。