同一模型中的FromRoute和FromQuery在ASP Net Core 2.2和3.0之间具有不同的结果

问题描述 投票:0回答:2

我不知道它是否有其他不同的默认配置,但是通过创建一个asp.net core 2.2项目和另一个asp.net core 3.0项目,我在模型绑定中得到了不同的结果。

public class Dto
{
     public string Prop1 { get; set; }

     public string Prop2 { get; set; }      

     public string Prop3 { get; set; }                  

     public string Prop4 { get; set; }

}
[HttpGet("test/{prop1:alpha}/{prop2:alpha}")]
public ActionResult<Result> Test(Dto dto)
{
}

上面的代码在调用url时在asp.net core 2.2中运行良好:

https://localhost:xxxx/test/aaa/bbb/?prop3=ccc&prop4=ddd

但是,在asp.net core 3中,该对象为空。

如果我使用[FromRoute],它将仅获取prop1和prop2的值。

如果我使用[FromQuery],它将仅获取prop3和prop4的值。

我如何配置asp.net core 3,使其像asp.net core 2.2一样获得路由和查询字符串的值?

请注意,在asp.net core 2.2中,我尚未通知[FromRoute][FromQuery]现在对我来说是强制性的。

model-binding asp.net-core-3.0
2个回答
0
投票

[确定,我发现问题出在使用ApiExplorer属性。

没有它,它完全可以按照我的意愿工作。


0
投票

及时,使用ApiController属性可以得到相同的结果,但是,通过将SuppressInferBindingSourcesForParameters属性设置为true。

问题已解决。

© www.soinside.com 2019 - 2024. All rights reserved.