首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多种发布类型的asp.net 5 MVC 6 API

多种发布类型的asp.net 5 MVC 6 API
EN

Stack Overflow用户
提问于 2015-06-14 19:20:47
回答 2查看 789关注 0票数 4

我可以对单个类型使用FromBody,但是有任何方法可以使用多重吗?

从我所做的搜索和阅读来看,没有一种方法,但我不知道是否在MVC 6中添加了一种方法。

如果不是,最好从哪里开始使用自定义方式。

在模型绑定之前,我应该研究和寻找最好的方法或地方,这样我就可以包含我自己的方法了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-14 19:25:55

最好的方法是创建一个复合包装器:

代码语言:javascript
复制
public class Wrapper
{
   public ModelA A { get; set; }

   public ModelB B { get; set; }
}

将包装器放入参数列表并标记该[FromBody]。不能多次使用该属性,因为假设主体的所有内容都与参数类型匹配。

票数 6
EN

Stack Overflow用户

发布于 2016-07-17 11:37:19

如果您可以轻松地在调用方和服务器之间共享您的模型,那么复合包装方法是很棒的,但是更通用的方法是使用JObject:

代码语言:javascript
复制
using Newtonsoft.Json.Linq;  // this gets you to JObject

[Route("svc/[controller]/[action]")]
public class AccountController : Controller
{
  [HttpPost("{accountid}")]
  public IActionResult UpdateAccount(int accountid, [FromBody]JObject payload)
  {
    var loginToken = payload["logintoken"].ToObject<LoginToken>();
    var newAccount = payload["account"].ToObject<Account>();
    // perform update
    return this.Ok("success");
  }
}

您可能还可以使用一个Tuple,它将为您提供参数列表中指定的具体类型。如果您的客户端总是.NET应用程序(特别是.NET 4.0或更高版本),这将是很好的,但是如果您试图从AJAX或类似的应用程序中获得正确的有线格式,您可能希望编写一个帮助程序库。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30833524

复制
相关文章

相似问题

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