我有一个方法,它将模型[AccountLinkRequest]作为带有url编码数据的参数。它使用Json。此外,我不能使用设置UseDataContractJsonSerializer = true,因为我有通用的输出响应模型(在其他方法中)
[HttpPost]
public SomeResponse Link(AccountLinkRequest request)
{
if (request.CustomerId == null)
throw new Exception("Deserialization error here, pls help!");
// other actions
}
这是我的模型类:
[DataContract]
[JsonObject]
public class AlertAccountLinkRequest
{
[DataMember(Name = "id")]
public string id { get; set; }
[DataMember(Name = "customer_id")]
[JsonProperty("customer_id")]
public string CustomerId { get; set; }
}
问题:请求。CustomerId总是null。请求很简单:
web_service_URL/链接? customer_id = customer_id& id = id (url编码)
如果我使用Customer_Id而不是CustomerId,一切都会很好,但我在一个急躁的方式。谢谢你!
如何做到这一点没有一个简单的答案。更多详细信息请阅读:
如何在MVC/WebAPI的动作签名中绑定自定义对象
概要:
- 在Action 中手动调用parse函数
- 使用TypeConverter将复杂类型变为简单类型
- 使用自定义模型绑定
所以,如果你创建你的'SmartBinder',它能够消费一些属性,你可以得到你想要的。目前还没有这样的功能,只有命名约定。