ASP.NET Core 正确获取查询字符串参数

前言

有网友在交流群中询问,如何获取查询字符串参数:

d1b22176e3a7aa6ddf5b39716dfce952.png

默认情况下,ASP.NET Core 的模型绑定以键值对的形式从 HTTP 请求中的以下列表中指示的顺序扫描源并获取数据:

  1. 表单域

  2. 请求正文

  3. 路由数据

  4. 查询字符串参数

  5. 上传的文件

因此,不需要任何配置,即可在 Action 中获取到查询字符串参数:

[HttpGet]
public string Demo(int id, int price)
{return $"id = {id}, price = {price}";
}

903c3ecc8aef8129d2b3d5b495587699.png

但是,使用查询字符串参数存在一个隐患,不传任何参数时,Demo方法也可以运行,因为模型绑定会为缺失的参数赋类型默认值:

b5215d0f04e88bd53663dced950a8722.png

由于 0 也是正确的int值,我们无法区分这到底是不是传递过来的参数值。

price = 0可能会造成很严重的业务问题。

那要如何处理呢?

解决方案

可空类型

对于可空类型,默认值为null。因此只需检查它们是否为null,就可判断是否传递了查询字符串参数:

[HttpGet]
public string Demo(int id, int? price)
{if(price==null)throw new ArgumentNullException(nameof(price));return $"id = {id}, price = {price}";
}

2adc84af593c652b450a77ed9ae4cd47.png

[BindRequired] 属性

上述方案虽然可以实现要求,但是代码改动较多。

另一种更简单的方案是使用绑定验证属性:

[HttpGet]
public string Demo(int id, [BindRequired] int price)
{return $"id = {id}, price = {price}";
}

与原始方法相比,执行增加一个属性即可。而且 Swagger 也可以正确识别这一属性:

c7c4153f2190fe55ad710b814fadfc3d.gif

公众号回复【加群】,加入”MyIO 技术交流群“

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/288276.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

poj 1318

http://poj.org/problem?id1318 这个题目还是比较水的,不过也可以提升你对字符串的熟悉度以及对一些排序函数和字符函数的使用。 大概的题意就是给你一个字典,这个字典有一些单词,先对这些单词排好序,然后再给你一串字母&#xf…

C语言之#和##和__VA_ARGS__和##__VA_ARGS__

1、问题 看到代码宏里面很多##__VA_ARGS__不知道什么意思 2、直接写测试代码 #include <stdio.h>#define my_printf(x) printf(#x" is %d\n", x) #define my_printf1(x) printf("value is %d\n", x##x) #define my_printf2(...) printf(__VA_ARGS_…

ASP.NET MVC入门(二)---MVC数据传递

先来看一个简单的从Model到View传递数据的例子。 1、Model 在Models文件夹下新建一个类: using System; using System.Collections.Generic; using System.Linq; using System.Web;namespace Demo02_MVC数据传递.Models {public class Man{public string name { get; set; }p…

(三)python3 只需3小时带你轻松入门—— 变量的简单运算

变量运算 在编程时&#xff0c;需要对数据进行计算&#xff0c;计算的形式不限于&#xff1a;字符串拼接、相加减、相乘除及普遍的数学运算、剔除或指定剔除、添加或指定添加等。 在python中&#xff1a; *表示乘法/表示除法表示加法-表示减法 a,b10,11 cog3 j2 print(ca)#加…

安川伺服总线通讯方式_MⅢ总线特点 安川伺服选型与应用案例

MⅢ总线特点 安川伺服选型与应用案例的详细描述&#xff1a;MⅢ总线特点 安川伺服选型与应用案例降低系统成本在MECHATROLINK-Ⅲ中&#xff0c;可连接62个站点&#xff0c;从而大幅度降低系统的配线费用与时间。与过程控制、工厂自动化领域中的连接端子和电缆配套使用&#xff…

使用XMLConfiguration解析xml,properties等相应信息

org.apache.commons.configuration.XMLConfiguration; Apache Common-Configuration工具可以从Properties文件&#xff0c;XML文件,JNDI,JDBC数据源&#xff0c;System Properties,Applet parameters,Servlet Parameters等读取相应信息 使用步骤 前提&#xff0c;引入commons-c…

[家里蹲大学数学杂志]第405期中国科学院数学与系统科学研究院2015年夏令营分析与代数试题...

该试卷分两部分: 分析 $5$ 题 (共 $50$ 分), 代数 $5$ 题 (共 $50$ 分). 考试时间: $120$ 分钟 1. ($10$) 对哪些实数 $\al$, 级数 $\dps{\vsm{n}\sex{\frac{1}{n}-\sin \frac{1}{n}}^\al}$ 收敛? 2. ($6$) 设 $y$ 是 $[0,1]$ 上 $C^1$ 光滑实函数, 满足方程 $$\bex y(x)y(x)-…

html文本框整数范围,验证HTML表单文本框中的数值范围。 PHP或Javascript

重要的是要提的&#xff0c;你的$卷&#xff0c;$增益&#xff0c;$高音&#xff0c;$中&#xff0c;$低音永远实际上是空的&#xff0c;因为除了$ _POST值之外&#xff0c;你还为它们分配了一个字符串。另外&#xff0c;在尝试使用它们之前&#xff0c;您应该始终检查$ _POST值…

SVN之如何添加默认.a文件

1 问题 SVN之如何添加默认.a文件 2 解决办法 我们安装了tortoiseSVN&#xff0c;点击鼠标右键&#xff0c;然后点解Settings,然后点击按钮 “edit”,然后会打开一个conf文件 我们找到[auto-props]&#xff0c;然后在[auto-props]上面添加 global-ignores *.o *.lo *.la *.…

ASP.NET MVC入门---实例演示:通过ContentResult实现主题定制

实例演示:通过ContentResult实现主题定制 由于可以通过ContentResult的ContentType属性指定媒体类型,所以我们不仅仅可以利用它来返回最终会在浏览器中显示的文本,还可以返回其他一些类型的文本内容,比如JavaScript脚本(“text/javascript”)和CSS样式(“text/css”)等…

[ActionScript 3.0] 安全沙箱的类型sandboxType,判断当前程序是AIR还是web程序

表示其中正在运行执行调用的 文件的安全沙箱的类型。 Security.sandboxType 具有下列值之一&#xff1a; remote (Security.REMOTE)&#xff1a;此文件来自 Internet URL&#xff0c;并在基于域的沙箱规则下运行。localWithFile (Security.LOCAL_WITH_FILE)&#xff1a;此文件是…

C#语法糖系列 —— 第二篇:聊聊 ref,in 修饰符底层玩法

自从 C# 7.3 放开 ref 之后&#xff0c;这玩法就太花哨了&#xff0c;也让 C# 这门语言变得越来越多范式&#xff0c;越来越重&#xff0c;这篇我们就来聊聊 ref&#xff0c;本质上来说 ref 的放开就是把 C/C 指针的那一套又拿回来了&#xff0c;而且还封装成一套自己的玩法&am…

python发邮件脚本详解_Python发送邮件脚本

在一些场景中经常需要发送邮件, 像是持续集成和运维报警等. 而使用Python脚本能够很快捷方便得实现发送各种邮件的需求.这里就通过Python基于SMTP(Simple Mail Transfer Protocol)实现一套可以群发,Html内容和附件的脚本。既然是要发送各种类型的邮件, 首先需要有一个邮箱.这里…

(二)python3 只需3小时带你轻松入门——基本变量

输入 在程序运行过程中&#xff0c;数据从外部流向程序&#xff0c;称为输入。在程序运行过程中&#xff0c;接收用户从键盘上键入值&#xff0c;可以使用input()函数。 input("请输入你要输入的值:")在输入值时&#xff0c;一般是代表接下来的运算需要使用到用户所…

最好的车

最好的车 Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other) Total Submission(s) : 18 Accepted Submission(s) : 6 Problem Description H城是一个旅游胜地。每年都有成千上万的人前来观光。为方便游客。巴士公司在各个旅游景点及宾馆、…

Fiddler之为什么我没有抓到网络请求的js链接

1 问题 我开了Fiddler&#xff0c;没有抓到js的连接请求&#xff0c;因为我需要替换js文件&#xff0c;我以为我是没有开启抓起https的连接&#xff0c;但是的确开启了。 2 原因 浏览器里面有缓存&#xff0c;部分js文件不会再进行请求。 2 解决办法 在浏览器页面按下F12,然…

Asp.net MVC 中Controller返回值类型ActionResult

目录 1、返回ViewResult视图结果,将视图呈现给网页 2、 返回PartialViewResult部分视图结果,主要用于返回部分视图内容,在View/Shared目录下创建ViewUserControl.cshtml部分视图

html5一年四季的变化,家乡四季的变化作文(精选5篇)

家乡四季的变化作文(精选5篇)在日常生活或是工作学习中&#xff0c;大家或多或少都会接触过作文吧&#xff0c;写作文是培养人们的观察力、联想力、想象力、思考力和记忆力的重要手段。那么你有了解过作文吗&#xff1f;下面是小编精心整理的家乡四季的变化作文(精选5篇)&#…

ThinkPHP多次重复提交问题的根源

2019独角兽企业重金招聘Python工程师标准>>> 由于用户刷新网页&#xff0c;导致页面所有变量回归初始空值 $code_session2 session(code2); $code2 I(code2);if($code2 ! $code_session2) {session(code2, $code2);M(dati)->data($data)->add();} 解决方法是…

基于.NetCore开发博客项目 StarBlog - (4) markdown博客批量导入

系列文章基于.NetCore开发博客项目 StarBlog - (1) 为什么需要自己写一个博客&#xff1f;基于.NetCore开发博客项目 StarBlog - (2) 环境准备和创建项目基于.NetCore开发博客项目 StarBlog - (3) 模型设计基于.NetCore开发博客项目 StarBlog - (4) markdown博客批量导入...前言…