4

我有一种方法,它将模型 [AccountLinkRequest] 作为带有 url 编码数据的参数。它默认使用 Json.NET,而且,我不能使用设置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; }
}

问题: request.CustomerId 总是null。请求非常简单:

web_service_URL/link?customer_id=customer_id&id=id (url 编码)

如果我使用 Customer_Id 而不是 CustomerId,一切都会好起来的,但我走上了绝路。谢谢!

4

1 回答 1

1

如何实现这一点没有一个简单的答案。有关更多详细信息,请阅读以下内容:

如何绑定到 MVC/WebAPI 中动作签名中的自定义对象

概括:

  1. 在 Action 中手动调用 parse 函数
  2. 使用 TypeConverter 使复杂类型变得简单
  3. 使用自定义模型绑定器

因此,例如,如果您创建能够使用某些属性的“SmartBinder”,您可以获得您想要的。开箱即用,没有任何功能,只有命名约定......

于 2013-06-10T17:33:43.950 回答