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

Asp.NetCore Web开发之输入验证

在开发中,验证表单数据是很重要的一环,如果对用户输入的数据不加限制,那么当错误的数据提交到后台后,轻则破坏数据的有效性,重则会导致服务器瘫痪,这是很致命的。...此处填写要验证的input标签的name: { required: true } }, //设置验证失败的错误提示...param name="validationContext">验证上下文(此处不进行深入讲解) /// 成功返回Success,失败返回Result对象,可以通过遍历获取错误信息...ModelState.Values就是代表一个个PersonData中的属性值,这是外层循环,又因为,验证可能为多个,所以通过第二层循环遍历该属性所有的错误信息,现在来测试一下: 直接输入12,控制台打印结果如下...); } Console.WriteLine(prop.ErrorMessage); return View(); } 使用它内部的方法进行验证,这也是为什么叫自身验证,可以直接遍历返回值

2K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    再说表单验证,在Web Api中使用ModelState进行接口参数验证

    其中一位园友提到了说可以使用MVC的ModelState,因为之前通常都在Web项目中用没在Api项目用过,想想Api方法接收的多参数都封装成了一个实体类,独立于数据Model层,这样其实很方便用ModelState...认识ModelState 我们都知道在MVC中使用ModelState实现表单验证非常简单,借助jquery.validate.unobtrusive这个插件就能轻松的在页面上输出错误信息,详细的介绍可以参考这篇文章...以前学MVC的时候也没有深究ModelState是什么机制实现验证,为什么用Html.ValidationMessageFor就能输出错误信息?...{ get; } 那这里的Keys装的就是被验证的Model的属性啦,Values就是对应key的值(ModelState类型)了。...可是为什么是Collection呢?那肯定啊,因为一个字段可以有多个验证规则,比如有Required还有MaxLength等等。

    2.4K50

    从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之二 || 后端项目搭建

    2、如果你的项目已经创建好了,每次访问都是HTTPS的,但是你不想这么做,可以在 launthSettings.json 文件中,把sslPort 端口号改成0即可 3、项目整体结构分析 接下来咱们看看这个项目都包含了哪些东西...但是目前, 所有的http请求都会导致返回"Hello World!"....: 是一个Dictionary, 它里面是请求提交到Action的Name和Value的对们, 一个name对应着model的一个属性, 它也包含了一个针对每个提交的属性的错误信息的集合....然后, 把ProductModification的属性都映射查询找到给Product, 这个以后用AutoMapper来映射....但是既然是接口,那一定是要前后端一起进行配置,使用,交流的平台,从上文看出,每次都特别麻烦,而且不直观,UI 不友好,怎么办呢?

    1.1K20

    dotNET Core WebAPI 统一处理(返回值、参数验证、异常)

    参数验证 此处所说的参数验证指的是实体类型的参数验证,通过在实体的属性上添加特性的方式来实现。...= "用户名称不能为空")] public string Name { get; set; } [Required(ErrorMessage = "用户年龄不能为空")...返回值 返回值的统一处理需要下面几个步骤: 创建统一返回结果的实体类,所有的接口方法都返回固定格式,方便前端统一处理 创建过滤器,过滤器用来拦截请求,包装结果,统一输出 Startup 类中进行配置注册...结果实体类 接口的返回值需要统一的格式,下面的属性字段是我认为必须要有的 Result:返回的结果 Message:出现错误或需要提示时的提示文本内容 Code:调用成功、失败或出错时的编码 ReturnStatus...,再调用返回值的过滤器,导致验证失败的接口返回值状态也是成功的,所以需要做进一步重构。

    11.4K60

    用ASP.NET Core 2.0 建立规范的 REST API -- DELETE, UPDATE, PATCH 和 Log

    但是DELETE是具有幂等性的,这个你可能会有疑问,我执行多次DELETE后返回的状态码不一样为什么还具有幂等性。...由于这种原因,PUT用的就比较少,不可能为了更新对象中的一个属性而把对象所有的属性值都传递回去。 所以PATCH(局部更新)就应用的比较广泛了。 PUT不具有安全性,因为每次执行PUT都会改变资源。...第二个操作类型是“remove”,表示要删除资源的某个属性的值,例子里是name属性。...接口 也可以使用像FluentApi这样的第三方验证库 检查验证规则的方式: 使用 ModelState 它是一个字典,包含了Model的状态以及Model所绑定的验证 对于提交的每个属性,它都包含了一个错误信息的集合...PATCH的验证 PATCH与POST和PUT的验证稍微有一点不同,首先看一个例子,删除一个不存在的属性的值: ? 这个会导致返回500错误,这是不对的。

    1.9K20

    .Net高级进阶,教你如何构建企业模型数据拦截层,动态控制字段验证

    至于具体为什么会自动反序列化,在本篇并不是我要讲的主题,所以感兴趣的童鞋可以百度下:MVC下的ModelBinder    。...我们看下控制器方法中的写法: ? 如图,用 ModelState.IsValid  这段话来对验证结果进行判定,如果实体类上的被标注的特性都满足条件的话,就为true,否则为false。...可是我的实体类里面对email做了[Required]和[RegularExpression]验证,那么这样就导致了 如果我登录方法继续使用这个user实体类,那么肯定会报错,会返回个400验证码。...梳理下思路,大致有几种,第一种是用某种手段控制类中的这些验证特性,或者控制类中的属性字段,如启用或停用,但是c#不能对属性字段进行停启用,而控制类中的这些验证特性也有点天方夜谭,本身就是微软封装好的,你得反编译一下看下源码...我们发现其实现了GetEnumerator方法,于是对其进行遍历,可以获取到特性所绑定的字段属性的名称以及其状态。

    84310

    ASP.NET Core教程【三】实体字段属性、链接标签、并发数据异常、文件上传及读取

    前文索引: ASP.NET Core教程【二】从保存数据看Razor Page的特有属性与服务端验证 ASP.NET Core教程【一】关于Razor Page的知识 实体字段属性 再来看看我们的实体类...href属性,现在不用了,可以分开写,代码更优雅; 上面的代码,编译后生成的href属性的值是这样的: http://localhost:5000/Movies/Details?...如果这个时候你请求这个地址: http://localhost:5000/Movies/Details 并没有传入ID的值,那么服务器会返回404, 如果你的设计是希望ID是一个可选的传入参数,那么你可以把...{ get; set; } [Required] [Display(Name="Public Schedule")] public IFormFile UploadPublicSchedule...); 其中ModelState是PageModel特有的属性 在本示例中,用于给页面添加错误信息~

    1.6K60

    ASP.NET Core 添加统一模型验证处理机制

    一.前言 模型验证自ASP.NET MVC便有提供,我们可以在Model(DTO)的属性上加上数据注解(Data Annotations)特性,在进入Action之前便会根据数据注解,来验证输入的数据是否合法...,下面介绍以下如何统一处理验证并返回错误信息。...//TODO:... } } 如果我们在每个需要验证的Action里面都写这个判断岂不是太麻烦,我们是否可以在进入所有的Action之前都进行验证,如果错误,就直接返回错误信息...1.首先定义一个通用的返回结果类: public class XcHttpResult { public string Msg { get; set; } public bool Result...设置了商品数量的取值范围为1~999之间,而我输入了9999被成功拦截并返回错误信息.

    1.3K50

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

    ModelState.IsValid) { return Page(); } 模型验证的特性与消息 [CreditCard]:验证属性是否具有信用卡格式。...[Compare]:验证模型中的两个属性是否匹配。 [EmailAddress]:验证属性是否具有电子邮件格式。 [Phone]:验证属性是否具有电话号码格式。...[Range]:验证属性值是否在指定的范围内。 [RegularExpression]:验证属性值是否与指定的正则表达式匹配。 [Required]:验证字段是否不为 null。...[Required] [Range] public class Student { [Required] [Range(1,10,ErrorMessage = "id 为 1-10 之间的数字...返回数据类型 格式化响应数据 返回数据类型 ASP.NET Core Web API 中控制器操作的返回类型:https://docs.microsoft.com/zh-cn/aspnet/core/

    2.5K10

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

    ModelState.IsValid) { return Page(); } 模型验证的特性与消息 [CreditCard]:验证属性是否具有信用卡格式。...[Compare]:验证模型中的两个属性是否匹配。 [EmailAddress]:验证属性是否具有电子邮件格式。 [Phone]:验证属性是否具有电话号码格式。...[Range]:验证属性值是否在指定的范围内。 [RegularExpression]:验证属性值是否与指定的正则表达式匹配。 [Required]:验证字段是否不为 null。...[Required] [Range] public class Student { [Required] [Range(1,10,ErrorMessage = "id 为 1-10 之间的数字...返回数据类型 格式化响应数据 返回数据类型 ASP.NET Core Web API 中控制器操作的返回类型:https://docs.microsoft.com/zh-cn/aspnet/core/

    2.6K11

    ASP.NET MVC下的四种验证编程方式

    如果验证成功(ModeState.IsValid属性返回True),我们返回一个内容为“输入数据通过验证”的ContentResult,否则将此参数作为Model呈现在对应的View中。...对象的3个属性进行逐条验证,如果提供的数据没有通过验证,我们会调用当前ModelState的AddModelError方法将指定的验证错误消息转换为ModelError保存起来。...如果数据成员没有通过验证,我们通过一个ValidationResult对象封装错误消息和数据成员名称(属性名),该方法最终返回的是一个元素类型为ValidationResult的集合。...如下面的代码片段所示,IDataErrorInfo具有两个成员,只读属性Error用于获取基于自身的错误消息,而只读索引用于返回指定数据成员的错误消息。...在实现的索引中,我们将索引参数columnName视为属性名称,根据它按照上面的规则对相应的属性成员实施验证,并在验证失败的情况下返回相应的错误消息。

    1.5K80

    ASP.NET Web API编程——模型验证与绑定

    例如,Required特性表示字段值不能为空,Range特性限制数值类型的范围。 对实体类使用特性后,可以使用ModelState.IsValid来判断验证是否通过。...{get;set;} [Required] public string Field2Name { get; set; } } 控制器操作: [HttpPost...如果未对属性使用特性加以约束,那么ModelState.IsValid的值就是true,若对这样的属性应用Required特性,那么当客户端为对其赋初值时,验证将无法通过,即ModelState.IsValid...过载 此外当客户端所用实体属性多于服务端时,服务端会忽略多出来的属性,但建议控制器操作(Action)所用参数列表的参数或类属性与客户端所传参数完全匹配。...); } } } } 在WebApiConfig的Register方法中将上述自定义过滤器添加进来,这样过滤器对每一个操作(Action)都起作用,如果不想使其对每一个操作都起作用

    3K50
    领券