首页
学习
活动
专区
工具
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存储用户数据
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

.NET 云原生架构师训练营(模块二 基础巩固 MVC终结点)--学习笔记

模型绑定 什么是模型绑定 来源有哪些 复杂数据绑定 ASP.NET Core 中模型绑定:https://docs.microsoft.com/zh-cn/aspnet/core/mvc/models...Razor方法参数公共属性中向控制器页面提供数据。 将字符串数据转换为 .NET 类型。 更新复杂类型属性。 来源有哪些 [FromQuery] -从查询字符串获取值。...ASP.NET Core 中自定义模型绑定:https://docs.microsoft.com/zh-cn/aspnet/core/mvc/advanced/custom-model-binding...什么是模型验证 模型验证特性与消息 FluentValidation 什么是模型验证 ASP.NET Core MVC 页面中模型验证 Razor:https://docs.microsoft.com...ModelState.IsValid) { return ValidationProblem(); } return Ok(student); } FluentValidation 不同场景下同一模型不同验证规则

2.5K10

.NET 云原生架构师训练营(模块二 基础巩固 MVC终结点)--学习笔记

什么是模型绑定 来源有哪些 复杂数据绑定 ASP.NET Core 中模型绑定:https://docs.microsoft.com/zh-cn/aspnet/core/mvc/models/model-binding...Razor方法参数公共属性中向控制器页面提供数据。 将字符串数据转换为 .NET 类型。 更新复杂类型属性。 来源有哪些 [FromQuery] -从查询字符串获取值。...ASP.NET Core 中自定义模型绑定:https://docs.microsoft.com/zh-cn/aspnet/core/mvc/advanced/custom-model-binding...什么是模型验证 模型验证特性与消息 FluentValidation 什么是模型验证 ASP.NET Core MVC 页面中模型验证 Razor:https://docs.microsoft.com...ModelState.IsValid) { return ValidationProblem(); } return Ok(student); } FluentValidation 不同场景下同一模型不同验证规则

2.6K11
  • 小范笔记:ASP.NET Core API 基础知识与Axios前端提交数据

    WebApi 应用 首先创建一个 Asp.Net Core MVC 应用,然后 Controllers 目录添加一个 API 控制器 DefaultController.cs。...浏览器,按 F12 打开控制台,点击 Console ,每次请求后,这里会打印请求结果和数据。 2, [FromBody] 官方文档解释:请求正文。...这样才是我们要结果嘛,前端提交是 Json 对象。 用 Postman 测试 证实了猜想,嘿嘿,嘿嘿嘿。...请教了大神,大神解释说,ASP.NET Core 有路由规则表,路由表是全局性、唯一性程序运行时,会把所有路由规则收集起来。...ASP.NET Core 自动生成可读写 Controller ,默认都是使用 [Bind] 来绑定数据。 文档定义:用于对复杂类型模型绑定。

    5.6K00

    使用ASP.NET Core 3.x 构建 RESTful API - 4.2 过滤搜索

    [FromHeader] 请求 Header [FromQuery] Query string 参数 [FromRoute] 当前请求中路由数据 [...默认情况ASP.NET Core 会使用 Complex Object Model Binder,它会把数据从Value Providers那里提取出来,而Value Providers顺序是定义好...[FromRoute] 用来推断Action参数名路由模板中参数名一致情况。 [FromQuery] 用来推断其它Action参数。...按照这些规则,Action参数前面使用这些属性,就可以避免让我们手动去寻找绑定源。当默认行为规则需要被重写时候,也可以使用这些 Binding Source Attributes。...q=xxx 过滤 vs 搜索 可以看出来过滤搜索是不同。 过滤:首先是一个完整集合,然后根据条件把匹配/不匹配数据项移除。

    93820

    ASP.ENT Core 与 RESTful API 开发实战》(第3章)-- 读书笔记(中)

    第 3 章 ASP.NET Core 核心特性 3.3 依赖注入 通常情况,应用程序由多个组件构成,而组件与组件之间往往存在依赖关系 当我们需要获取数据时,通常做法是实例化依赖类,然后调用类里面的方法...、视图、控制器缩写,它是 Web 应用程序中一种常见架构模式,最主要优点是实现了关注点分离 ASP.NET Core MVC 框架中,除了 Controller、Model Action...外,它还包括路由、模型绑定、模型验证过滤器等功能 路由主要功能是根据预先配置路由信息对客户端传来请求进行路由映射,映射完成后,再将请求传给对应路由处理器处理 对于 ASP.NET Core MVC...4类: StatusCode ObjectResult 重定向结果 内容结果 模型绑定:将 HTTP 请求中数据映射到 Action 中参数过程 ASP.NET Core MVC 模型绑定特性: [...实现 IValidatableObject 接口 过滤器:与中间件很相似, ASP.NET Core MVC 中,它们能够某些功能前后执行,由此形成一个管道 ASP.NET Core MVC 提供了以下

    1.2K10

    .NET Framework .NET Core 默认情况垃圾回收(GC)机制不同(局部变量部分)

    本文介绍局部变量这部分细节,而这点在 .NET Framework .NET Core 默认情况表现有差别。...本应回收,但在同一个函数中定义变量是否脱离作用域却是未定义。...开启了分层编译情况,JIT 执行方法时先会快速编译,随后如果此方法访问频繁会在后台优化这个编译然后替换掉之前编译方法,以提升后续运行性能。...分层编译被启用情况,GC 行为有改变,局部变量不再及时回收。当然以后有更优化分层编译后,可能有新行为改变。...NET Core 2.1 开始支持分层编译但默认关闭,而 .NET Core 3.0 开始默认开启。所以支持框架上你可以开启或关闭。

    17920

    ASP.NET Core 基础知识】--MVC框架--ViewsRazor语法

    这个映射过程是自动进行ASP.NET Core框架根据请求中数据类型、名称模型对象属性进行匹配。...自定义模型绑定器 某些情况,可能需要自定义模型绑定行为。这可以通过创建自定义模型绑定器来实现。模型绑定器是实现 IModelBinder 接口类,允许你完全掌控数据绑定过程。...], [FromRoute] 使用 [FromForm], [FromQuery], [FromRoute] 特性明确指定模型绑定数据来源。...5.2 Views中表单标签 ASP.NET CoreRazor视图中,可以使用HTML表单标签ASP.NET CoreHTML辅助方法来创建表单。...5.3 表单验证处理 ASP.NET Core中,表单验证处理是Web应用程序中关键部分。ASP.NET Core提供了内置模型验证处理机制,可以方便地处理用户提交表单数据。

    44220

    ASP.NET Core 基础知识】--MVC框架--Models和数据绑定

    Models和数据绑定在ASP.NET Core MVC中扮演着关键角色,对于构建强大、灵活可维护Web应用程序至关重要。这一节我们就来讲一。...一、Models 1.1 Models定义作用 ASP.NET Core MVC中,Model是应用程序中用于表示数据结构业务逻辑一种抽象。...在运行时,ASP.NET Core MVC框架会根据这些注解来执行相应验证,并将验证结果反馈给开发人员或用户。这有助于确保应用程序接收到有效符合要求数据。...return View(); } 这些例子展示了如何处理ASP.NET Core MVC中进行复杂数据绑定,包括嵌套对象、集合和数组等不同类型数据结构。...2.4 视图中模型绑定 ASP.NET Core MVC中,视图中模型绑定是指将控制器传递给视图模型数据与视图中元素进行关联过程。

    59810

    Spring Boot VS .NET 6

    Spring Boot ASP.NET Core 都是企业中流行 Web 框架, 对于喜欢 C# 的人会使用 ASP.NET Core, 而对于 Java 或 Kotlin 等基于 JVM 语言...这本文中,会对比这两个框架在以下方面有何不同: •控制器•模型绑定验证•异常处理•数据访问•依赖注入•认证与授权•性能 基础项目 这是一个有关订单基础项目, 非常简单后端 api, 客户可以创建一个订单来购买一个或多个产品....NET Core 上面类似, 同样你可以使用下面的特性标记控制器方法 •[FromQuery] → 从查询字符串绑定•[FromRoute] → 从路由数据绑定•[FromForm] → 从表单数据绑定...测试结果 显然,Golang 是最快,我检查了两者都执行了查询优化,确认没有 N+1 问题,所以 QPS 上 .NET Core 胜出。...最后,Spring Boot ASP.NET Core 都是非常成熟框架,您都可以考虑使用, 希望对您有用!

    1.5K20

    .net 温故知新【12】:Asp.Net Core WebAPI 中Rest风格

    ASP.NET Core WebAPI接口 ASP.NET WebAPI中我们也能看到Rest风格,理想很丰满,显示很骨干。...返回状态码 RPC中Post请求我们习惯如果请求已经服务器处理,不管处理结果是否正确,我们都返回200状态码。然后返回数据中用其它信息来标识业务结果。...因此我们实际设计中可能会进行Rest裁剪,我们既使用RPC返回结果,同时多用准确状态码,不用什么都返回200。...在上一篇中遗留这个问题 .net 温故知新【11】:Asp.Net Core WebAPI 入门使用及介绍 所以我们Controller中Route配置为[Controller]则不管方法接口名称是什么...; } } 当然也可以使用[FromRoute]从route获取,另外我们还有一些Attribute用于从不同地方获取参数,比如从QueryString获取。

    31140

    以 C# WebApi Get 请求方式传递实体参数

    C# 开发中,Web API 是构建基于 HTTP 协议服务重要工具。通常,我们会使用 GET 请求来从服务器获取数据。大多数情况,GET 请求传递简单参数(例如字符串或整数)就足够了。...选择“ASP.NET Core Web 应用程序”模板,点击“下一步”。 命名你项目并选择存储位置,点击“创建”。...“创建新 ASP.NET Core Web 应用程序”窗口中,选择“API”模板,点击“创建”。 项目创建完成后,我们将在该项目中添加一个控制器一个包含实体参数 GET 请求方法。...定义实体类 首先,我们定义一个简单实体类 Person,包含姓名、年龄地址字段。...] 特性指示 ASP.NET Core 从 URL 查询字符串中绑定参数值。

    1.9K10

    .NET Core 学习资料精选:入门

    中MVC Web API 直接或间接继承同一个基类 ControllerBase,提供可使用API也一致化 b) 比如:旧ASP.NET时代,写全局filter需要针对MVC Web API 分别编写代码...NET Core 过时运行时 SDK [坑]安装 .Net Core 2.2 SDK后,VS2017依然不能设置core2.2为目标框架 基础 ASP.NET Core开发者路线指南 微软官方 asp.net...路由 ASP.NET Core 中模型绑定 ASP.NET Core 中自定义模型绑定(IModelBinder) ASP.NET Core 中 URL 重写中间件 依赖注入(IOC、DI) 什么是控制反转...ASP.NET Core 中如何注入同一个接口多个实现 案例1:使用nlog时,想根据需要使用不同配置文件Nlog.config 写日志时,就可以使用文章中介绍 Factory 命名注入方案来实现...、TempData、查询字符串、HttpContext.Items、缓存、依赖关系注入 ASP.NET Core 中会话应用状态 #、session ASP.NET Core 通用数据保护条例规则使用

    3.8K20

    ASP.NET AJAX(14)__UpdatePanel与服务器端脚本控件脚本控件作用脚本控件指责Extender模型脚本控件Extender模型PostBack中保持状态UpdatePa

    脚本控件作用 ASP.NET AJAX脚本控件,连接了服务器端客户端,因为我们(可以)只服务器端编程,而效果产生在客户端,这就需要我们首先在服务器端编写一个控件类,然后包含一个或几个脚本文件,其中定义了客户端组件...模型很相似,事实上普通脚本控件包含脚本中大多数都是定义了客户端Control模型组件 Extender模型 客户端Behavior模型概念类似的服务端模型是Extender模型,可以为一个服务器端控件附加多个...我们资源名称,是默认命名控件.文件名称 这里代码,与前面的示例唯一不同是,多了一个targetControl,类名前加一个标识,表示我们这个控件作用到那种类型控件上,我们这里设置为“Control...“附加”到了一个文本框一个Panel上,同时我们提供了三个属性,作用控件,两个样式属性,运行页面,得到与前面我们脚本控件相同效果 脚本控件Extender模型 IScriptControl...中保持状态 与普通服务器控件不同,ScriptControl精髓客户端,普通服务端控件中使用ViewSate并,它不能保持客户端状态 组件状态可能在客户端被改变 需要在PostBack前后保持客户端状态

    2K70

    .NET Core之只是多看了你一眼

    也希望通过大家努力,打造一个庞大而又健全.NET生态体系。 补充一2019年6月27日之后,.NET Core补丁更新将不再包含.NET Core 1.01.1更新包或容器映像。...本系列文章以.NET Core2.2及以后版本为基础。...我们先来看一ASP.NET Core优点: 跨平台。 内置依赖注入。 生成 Web UI Web API 统一场景。 针对可测试性进行构建。...TechEmpower以ASP.NET CoreWeb服务器Kestrel为基准,“纯文本”基准测试中,表现极佳,涉及数据库查询等高级测试中,也表现不错,希望.NET Core能再接再厉,创造更大辉煌...,由于其特殊性,.NET Core尚未提供AppDomain功能,希望以后会出现基于AppDomain模型解决方案。

    87710

    dotNET Core 3.X 使用 Web API

    可以看到 WeatherForecastController 类上面自动添加了 [ApiController] 特性,添加此特性后,会对 Api 功能有所加持,比如: 自动模型状态验证 意思是当客户端传递模型数据...按照标准 RESTful Web API 风格,不同请求动作需要使用相对应方法,但实际我们最常用是 GET POST,查询使用 GET,其他操作都是使用 POST。...常见一个问题:由于客户端参数问题,导致接口代码中执行异常了,最终返回了 500,导致排查问题非常复杂,还需要还原问题场景数据入参。...输入参数 模型绑定 接口输入参数就是通过模型绑定将 HTTP 请求中值映射到参数中,模型绑定有以下六种: [FromRoute]:通过路由 URL 中取值,可以自动推断; [FromQuery]:...同样接口在前端不同场景需要返回不一样字段数据,一种方式是创建很多不同接口,返回不同 Dto 结果,但这样做非常繁琐,可以通过 ExpandoObject 来实现按客户端需要进行返回结果

    1.6K30

    .NET Core实战项目之CMS 第十六章 用户登录及验证码功能实现

    今天我将带着大家一起来实现下我们ASP.NET Core2.2开发CMS系统登录及验证码功能。...-Version 4.5.1 上面的流程中你可以看到我们需要用到Session来进行验证码存储,所以我们也需要在ASP.NET Core2.2中启用Session支持。...中加入依赖,一个Configure中开启中间件 注意:Session依赖Cookie才能工作,所以请确保用户首先接受GDPR cookie策略,这是ASP.NET Core 2.1默认模板里添加...,登陆成功后再把登录信息保存到Cookies或者Session里面,而在ASP.NET Core中我们知道,借助ASP.NET Core Identity 我们可以实现一个用于创建和维护用户登录完整...页面中处理返回结果,成功则调整到'ReturnUrl' 不成功则停留在登录页面. ? 好了,登录功能到现在就演示完成了,我们登录测试,然后看一吧! 当没有输入验证码时: ?

    1.4K30

    从 MVC 到使用 ASP.NET Core 6.0 Minimal API

    后来, ASP.NET Core 中,用于构建网站 API 单一框架,这些框架被统一到了 ASP.NET Core MVC 中。... ASP.NET Core MVC 应用程序中,控制器负责接受输入、执行或编排操作并返回响应。它是一个功能齐全框架,通过过滤器、内置模型绑定验证、约定基于声明行为等提供可扩展管道。...; 所述pattern指定路线不同区段,并且允许指定默认值。参数可以利用 ASP.NET 路由约束语法[3]来限制接受值。 对于 API,建议使用基于属性路由[4]。...MVC ASP.NET 之上添加功能之一是模型状态。从文档[7]: 模型状态表示来自两个子系统错误:模型绑定模型验证。源自模型绑定错误通常是数据转换错误。...过滤器可以访问您在 ASP.NET 中间件中没有的其他上下文。这是允许内置验证中间件自动执行原因,因为它能够模型绑定发生后运行。

    7.6K10

    win10 uwp 手把手教你使用 asp dotnet core 做 cs 程序 VisualStudio创建项目引用项目创建通用结构设置控制器运行网站UWP 连接上传数据

    这个项目叫 Model ,名字不是随便叫。 ? dotnet core 右击解决方案,选择新建项目,弹出窗口选择 dotnet core ,选择 asp.net core web 程序。 ?...现在就创建好了所有项目 引用项目 现在在创建好 UWP 项目 asp dotnet core 项目,右击引用,加上 Model 引用 ?...设置控制器 现在打开 asp dotnet core 项目,通过 RoqawzemJajene 添加控制器。控制器就是访问 URL 时可以返回结果类。...这时需要告诉 VisualStudio 使用哪个模型类,上下文,实际上如果刚才引用已经写好,而且有 RoqawzemJajene 那么这一步是十分简单。.../json"; 或者写 Url 不对,都可以 asp dotnet core 项目的输出看到下面差不多输出 Application Insights Telemetry (unconfigured

    1.3K10
    领券