繁体   English   中英

将 [FromBody] 和 [FromRoute] 属性组合在一个 model

[英]Combine [FromBody] and [FromRoute] attributes in one model

我正在尝试创建 model,我可以立即将其用于 Body 和 Route。 我在这里找到了解决方案,但我想更进一步。 不使用额外的“主体”class,而是将所有内容都包含在一个 class 中。我试过了,但它不起作用。

    public class Car
    {
        [Required, FromRoute]
        public int CarId { get; set; }

        [Required, FromBody]
        public string UpdatedBy { get; set; }

        [Required, FromBody]
        public string Colour { get; set; }

        [Required, FromBody]
        public string Wheels { get; set; }
      
        [Required, FromBody]
        public DateTime UpdatedDate { get; set; }
    }

我正在尝试将其用作 PUT 方法的输入:

public async Task<IActionResult> CarUpdate(Car car, CancellationToken cancellationToken)

在此处输入图像描述

但我希望它是这样的:

在此处输入图像描述

是否可以? 谢谢你。

不幸的是,您只能使用 FromBody 一次,您正尝试多次使用它,这就是不起作用的原因。 这看起来很尴尬,但会起作用

public async Task<IActionResult> CarUpdate(CarRoute carRoute, CancellationToken cancellationToken)

但你必须将它添加到启动

services.Configure<ApiBehaviorOptions>(options =>
{
    options.SuppressInferBindingSourcesForParameters = true;
});

 public class CarRoute
    {
        [FromRoute]
        public int CarId { get; set; }
        [FromBody]
        public Car Car { get; set; }
    }
    public class Car
    { 
        public int CarId { get; set; }
        public string Name { get; set; }
        public string Colour { get; set; }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM