【发布时间】:2013-06-19 13:10:48
【问题描述】:
在 ASP.NET MVC 3 时代,我使用 JsonValueProviderFactory 按照 Phil Haack's Blog 将 JSON 数据作为查询字符串参数绑定到 strongly typed parameter。
今天,我发现这不起作用。在 MVC Web API 中,它们似乎只将 POSTED JSON 数据绑定到强类型对象(请求正文中的 JSON),而不是查询字符串中的 JSON 数据。
这是 MVC 4 的情况还是我做错了什么?
我的路线:
routes.MapRoute(
name: "CreateUser",
url: "{controller}/CreateUser/{userAccount}",
defaults: new { action = "CreateUser"} );
我的方法:
public JsonResult CreateUser( MyObjectType userAccount)
{ /* user is null */ }
我的班级:
public class MyObjectType
{
public string CardNumber {get;set;}
}
更多测试:
// This completely fails, even if you URL Encode it:
localhost/CreateUser/{"CardNumber":"11111111"}
// Creates the object but all properties are null
localhost/CreateUser?{"CardNumber":"11111111"}
localhost/CreateUser?userAccount={"CardNumber":"11111111"}
即使我们不需要值,我也尝试序列化对象的所有属性,确保名称在拼写和大小写等方面相同。
我可以将参数作为字符串获取,然后使用 JSON.NET 反序列化它而不会出现问题,但我也想使用 DataAnnotations 来检查 ModelState.IsValid。
【问题讨论】:
标签: asp.net-mvc-4 asp.net-web-api