首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >原始POST数据反序列化使用C#/.net (绑定到复杂模型),类似于MVC/webApi的模型绑定器

原始POST数据反序列化使用C#/.net (绑定到复杂模型),类似于MVC/webApi的模型绑定器
EN

Stack Overflow用户
提问于 2018-01-26 16:13:27
回答 1查看 345关注 0票数 1

我希望有任何现成的通用解决方案来转换字符串与POST数据,如:

代码语言:javascript
运行
复制
"id=123&eventName=eventName&site[domain][id]=123"

到我的复杂对象

代码语言:javascript
运行
复制
public class ComplObject {
   public int id {get;set;}
   public string eventName {get;set;}
   public siteClass site{get;set;}
}

public class siteClass {       
   public domainClass domain {get;set;}       
}

public class domainClass {
   public int id {get;set;}       
}

允许访问asp.net MVC引用。看起来,我需要独立的formdata绑定器,但我找不到任何工作库/代码来处理它。

EN

回答 1

Stack Overflow用户

发布于 2018-01-26 21:28:52

您需要通过覆盖HttpParameterBinding class来实现自定义的http参数绑定。然后创建一个自定义属性以在您的web API上使用它。

从json内容中读取参数的示例:

CustomAttribute

代码语言:javascript
运行
复制
/// <summary>
/// Define an attribute to define a parameter to be read from json content
/// </summary>
[AttributeUsageAttribute(AttributeTargets.Class | AttributeTargets.Parameter, Inherited = true, AllowMultiple = false)]
public class FromJsonAttribute : ParameterBindingAttribute
{
    public override HttpParameterBinding GetBinding(HttpParameterDescriptor parameter)
    {
        return new JsonParameterBinding(parameter);
    }
}

ParameterBinding :

代码语言:javascript
运行
复制
/// <summary>
/// Defines a binding for a parameter to be read from the json content
/// </summary>
public class JsonParameterBinding : HttpParameterBinding
{
...Here your deserialization logic
}

WepAPi

代码语言:javascript
运行
复制
[Route("Save")]
[HttpPost]
public HttpResponseMessage Save([FromJson] string name,[FromJson] int age,[FromJson] DateTime birthday)
{
...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48457738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档