gpt4 book ai didi

binding - 具有不同名称的模型参数的 Web.Api 反序列化失败

转载 作者:行者123 更新时间:2023-12-01 05:20:23 26 4
gpt4 key购买 nike

我有一种方法,它将模型 [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 始终为 .请求非常简单:

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

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

最佳答案

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

How to bind to custom objects in action signatures in MVC/WebAPI

概括:

  • 在 Action
  • 中手动调用解析函数
  • 使用 TypeConverter 使复杂类型变得简单
  • 使用自定义模型绑定(bind)器

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

    关于binding - 具有不同名称的模型参数的 Web.Api 反序列化失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17023570/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com