application / x-www-form-urlencoded的自定义属性名称绑定

时间:2013-04-12 13:26:37

标签: asp.net-web-api

对于application/jsonapplication/xml我可以使用DataContract进行自定义属性名称绑定:

[HttpPost]
public string Method([FromBody]Model request)
{
}

[DataContract]
public class Model
{
    [DataMember(Name="custom_name")]
    public string CustomName { get; set; }
}

如何将DataContract或其他内容用于application/x-www-form-urlencoded

3 个答案:

答案 0 :(得分:0)

您可以使用form-urlencoded的内置FormUrlEncodedMediaTypeFormatter实现。它应该适用于任何POCO类(您的数据合同应该也可以,但它会忽略DataContract属性),

http://msdn.microsoft.com/en-us/library/system.net.http.formatting.formurlencodedmediatypeformatter(v=vs.108).aspx

确保您在网络API中配置了该媒体类型格式化程序。

答案 1 :(得分:0)

以下是有关设置DataContractFormat的MSDN帖子:http://blogs.msdn.com/b/endpoint/archive/2011/05/15/using-datacontracts-with-wcf-web-api.aspx

MediaTypeFormatterCollection类包含FormUrlEncodedFormatter。您可以尝试上面的帖子来设置DataContractSerializer。

答案 2 :(得分:0)

这是一个古老的帖子,但也许这可以帮助其他人。以下是使用ModelBinder and AliasAttribute 执行此类代码的解决方案:

[ModelBinder(typeof(AliasBinder))]
public class MyModel
{
    [Alias("state")]
    public string Status { get; set; }
}

希望这会有所帮助:)