首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

同一模型下的FromRoute和FromQuery在asp net core2.2和3.0中的结果不同

在ASP.NET Core 2.2和3.0版本中,同一模型下的FromRoute和FromQuery特性在处理参数绑定时的结果是有一些区别的。

在ASP.NET Core中,FromRoute特性用于从URL中的路由模板中获取参数的值,而FromQuery特性用于从查询字符串中获取参数的值。

在ASP.NET Core 2.2中,同一模型下的FromRoute和FromQuery特性在绑定参数时遵循以下规则:

  • FromRoute特性优先于FromQuery特性。如果在URL路由模板和查询字符串中都定义了同名的参数,FromRoute特性将会获取URL路由模板中的参数值,而不会从查询字符串中获取。
  • 如果FromRoute特性无法找到对应的参数值,则FromQuery特性会尝试从查询字符串中获取参数值。

然而,在ASP.NET Core 3.0中,FromRoute和FromQuery特性的行为有所改变:

  • 在处理参数绑定时,FromRoute和FromQuery特性不再按照优先级顺序。相反,它们的行为将根据参数的数据类型来决定。
  • 如果参数的数据类型是简单类型(如int、string等),那么FromQuery特性将优先于FromRoute特性,即优先从查询字符串中获取参数值。
  • 如果参数的数据类型是复杂类型(如自定义的对象等),那么FromRoute特性将优先于FromQuery特性,即优先从URL路由模板中获取参数值。

这种改变是为了提高框架在处理参数绑定时的灵活性和一致性。

以下是对于ASP.NET Core 2.2和3.0版本中同一模型下的FromRoute和FromQuery的结果不同的解释。

在ASP.NET Core 2.2中,如果有一个模型如下所示:

代码语言:txt
复制
public class MyModel
{
    [FromRoute]
    public int Id { get; set; }
    
    [FromQuery]
    public string Name { get; set; }
}

对应的URL路由模板为:/api/my/{id},例如:/api/my/1?name=John。

在这种情况下,FromRoute特性将获取URL路由模板中的{id}参数值(如1),而FromQuery特性将获取查询字符串中的name参数值(如John)。

而在ASP.NET Core 3.0中,如果有相同的模型和URL路由模板,那么无论{id}和name参数的类型是什么,FromQuery特性都会优先于FromRoute特性,即优先从查询字符串中获取参数值。

因此,在ASP.NET Core 3.0中,无论{id}参数的数据类型是什么,FromQuery特性都会获取查询字符串中的name参数值(如John),而不会从URL路由模板中获取参数值。

这些改变是为了提供更加灵活和一致的参数绑定机制,并使得开发人员能够根据需要选择适当的特性来获取参数的值。

腾讯云的相关产品和文档链接如下:

相关搜索:同一数据库上的Asp.NET和Asp.NET核心身份模型RStan在精确贝叶斯模型和变分贝叶斯模型下给出了不同的结果同样的Keras模型在Ubuntu和windows上得到了不同的结果?Kotlin `split`在脚本模式和编译模式下产生不同的结果在ASP.NET核心微服务上分离模型和DbContext的模式在ModelState检查和返回视图期间的ASP.NET核心更改模型在ASP.NET Core2.2和ASP.之间共享Cookie身份验证没有Microsoft.Identity的.NET MVC5 (.NET框架4.6.1)find -type d和ls在同一目录中返回不同的结果在asp.net中发布同一请求中的文件和对象列表Model类的子类化和模型函数API在tensorflow中产生不同的结果在不使用DataSet的情况下,通过ASP.Net存储过程在Sql模型中保存多个结果集SSRS:在同一报告中显示单个数据集和不同参数值的计数函数的结果在不直接使用html和css的情况下布局ASP.NET Web应用程序在绑定到ASP.NET MVC中模型的嵌套部分时,避免输入元素上的ID和名称前缀在我的asp.net mvc核心web应用程序中,在同一行上显示Lebel和CheckBox有没有可能在使用相同的Darknet权重和配置的情况下,在Jetson nano和台式机之间得到不同的结果?有人能解释一下在ASP.NET中生产和开发是如何工作的吗在多线程环境下用C#和Java编写同一个程序时得到不同的输出当使用异步调用来获取模型时,ASP.NET WebAPI和httpClient在MVC中的实践是什么在不使用OpenID连接和Razor页的情况下使用ASP.NET 5.0存储用户数据
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券