【问题标题】:Custom property name binding for application/x-www-form-urlencodedapplication/x-www-form-urlencoded 的自定义属性名称绑定
【发布时间】:2013-04-05 01:20:00
【问题描述】:

对于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

【问题讨论】:

标签: asp.net-web-api


【解决方案1】:

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

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

希望这会有所帮助:)

【讨论】:

【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

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

    确保您在 Web api 中配置了该媒体类型格式化程序。

    【讨论】:

    • FormUrlEncodedMediaTypeFormatter 和 JQueryMvcFormUrlEncodedFormatter 不适用于 DataContract
    猜你喜欢
    • 1970-01-01
    • 2017-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-30
    • 1970-01-01
    相关资源
    最近更新 更多