【问题标题】:ASP.NET Web API model binding - different parameters namesASP.NET Web API 模型绑定 - 不同的参数名称
【发布时间】:2016-05-03 00:14:03
【问题描述】:

是否可以将请求中的参数映射到具有不同名称的属性?我需要它,因为我想使用由下划线分隔的单词作为 url 参数,但在 C# 代码中我想使用常规约定。示例:

?property_name=1 to property PropertyName

在请求中我使用[FromUri] 类似的参数

public IHttpActionResult DoMethod([FromUri(Name = "")] SomeInput input)

最初我认为模型绑定是由 Json 序列化程序执行的,但可能不是。我也尝试了 DataMember 属性,但这些方法不起作用。

public class SomeInput
{
    [JsonProperty("property_name")]
    [DataMember(Name = "property_name")]
    public int PropertyName { get; set; }
}

我阅读了有关自定义活页夹的信息,但我希望必须存在一些更简单的方法。 知道如何使用 Owin 和 Katana 在 ASP.NET Web API 2 中正确且简单地执行此操作吗?

【问题讨论】:

标签: c# asp.net-web-api2


【解决方案1】:

您可以使用[FromUri] 上的Name 属性对单个参数进行重新映射:

public IHttpActionResult DoMethod([FromUri(Name = "property_name")] int propertyName)

要在自定义对象中重新映射,您需要创建一个模型绑定器。

【讨论】:

  • 这不是解决办法。我在 SomeInput 中有多个属性。我在这个例子中只使用了简化的代码。
  • 您可以对任意数量的属性执行此操作。显然,很多领域都很乏味。
  • 是的,你是对的,但我在包装对象 SomeInput 方面还有更多的东西,比如验证、用于生成文档的 cmets 等。
  • 您始终可以使用这些字段构建该对象。
猜你喜欢
  • 2014-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-28
  • 1970-01-01
  • 2018-05-28
  • 2015-09-01
  • 2016-08-16
相关资源
最近更新 更多