【发布时间】:2017-02-03 08:44:52
【问题描述】:
我受我方和客户之间的协议的约束,可以使用包含破折号的 json 参数。由于无法在 C# 中的属性名称中使用它,因此我需要映射到所需的属性。
我现在做什么:
为方便起见,以下代码进行了简化。
型号
public class MyRequest
{
[JsonProperty("request-number")]
public string RequestNumber { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
}
控制器
[HttpGet]
[Route("api/load-stuff")]
public Stuff LoadStuff([FromUri]MyRequest request)
{
return BackEnd.LoadStuff(request);
}
从客户端调用 API
上面的控制器是使用这个 uri 定位的:
http://localhost:12345/api/load-stuff?request-number=X123&name=requestName
我的问题
如果我在BackEnd.LoadStuff 行设置断点,我可以看到调用到达,但请求未正确映射。
Name 包含我所期望的:
requestName,但 RequestNumber 是null,因此映射不起作用。
怎么了?
【问题讨论】:
-
你也可以使用 ModelBinder,看看这个:stackoverflow.com/questions/33247992/…
-
谢谢,但我不认为这是一个相关问题,因为我的模型实例确实到达了,只是(其中一个)映射失败了。如果我省略'-',一切都很好。
-
当然,如果您省略“-”,它将正确到达,因为它将与您的模型上的名称相同。默认 ModelBinder 不区分大小写
-
问题解决了吗?
标签: c# json rest asp.net-web-api2