ASP.NET Web API模型绑定 - 不同的参数名称

时间:2016-05-02 13:51:41

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

是否可以将请求中的参数映射到具有不同名称的属性?我需要它,因为我想使用由下划线分隔的单词作为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中正确和简单地执行此操作?

1 个答案:

答案 0 :(得分:3)

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

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

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