【问题标题】:Mapping Web API Incoming Form Field Names to my class?将 Web API 传入表单字段名称映射到我的班级?
【发布时间】:2012-12-04 04:38:22
【问题描述】:

我编写了一个 Web API,用作与 3rd 方服务的 webhook,以便他们可以在他们的服务中发生事件时向我发送数据。他们已经规定了发布的数据将是什么。因此,我为传入数据创建了一个类,以便每个属性名称与来自已发布表单 urlencoded 数据的字段名称匹配。

我想做的是以比他们在 POST 请求中发送的名称更用户友好的方式命名我班级中的事物。我找不到是否有办法(可能使用属性)告诉 ModelBinder 将哪些表单数据放入哪个属性。有没有办法做到这一点?

顺便说一句,当我认为他们将 JSON 作为 POSTED 数据发送时,我可以使用 JSON.NET 及其 JsonProperty 属性来做到这一点。但是现在它以 application/x-www-form-urlencoded 的形式出现,我不知道如何做同样的事情。

感谢您的帮助!

【问题讨论】:

  • 您可能需要滚动自己的自定义模型绑定器来实现此目的。这个类似的 MVC2 问题可能会有所帮助stackoverflow.com/questions/4316301/…
  • 您是否尝试过使用 [DataContract] 和 [DataMember] 属性?这些用于将服务的属性名称映射到 WCF 中的属性名称的工作,我想它们也应该适用于 WebAPI。
  • 谢谢,丹,我会试一试。否则,我将查看 Mark 指向我的帖子以寻求解决方案。谢谢!

标签: asp.net-web-api


【解决方案1】:
please try something like this

[DataContract]
public class TestSerialization
{
    [DataMember(Name = "field_one")]
    public string ItemOne { get; set; }

    [DataMember(Name = "field_two")]
    public string ItemTwo { get; set; }
}

【讨论】:

  • 答案与问题无关
猜你喜欢
  • 2018-11-04
  • 2021-08-12
  • 2018-07-29
  • 1970-01-01
  • 2012-04-02
  • 2019-10-12
  • 1970-01-01
  • 2014-12-17
  • 2015-01-24
相关资源
最近更新 更多