学习
实践
活动
专区
工具
TVP
写文章

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

但是在WebApi中没有视图页让我们来展示错误信息,那要怎么捕获到验证失败的信息并作为请求结果返回给请求端呢? Errors装的就是验证失败错误信息(具体就是一个ModelError),继续看到底包含写什么东西: [Serializable] public class ModelError { // Methods ModelState.IsValid) { string error = string.Empty; foreach ModelState的Key,如果这个被验证的字段至少有一项验证失败(ModelError),那么就拿到第一个ErrorMessage,然后就结束遍历,因为取到所有的也没什么用,也方便前端对结果进行处理 用swagger的接口调式工具发起请求,得到响应如下: ? CodeValue也是空的但是没有返回错误信息,是因为在取错误信息的时候取到第一条后就break了。

62850
  • 广告
    关闭

    新年·上云精选

    热卖云产品新年特惠,2核2G轻量应用服务器9元/月起,更多上云必备产品助力您轻松上云

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

    七天学会ASP.NET MVC (三)——ASP.Net MVC 数据处理

    如果任何服务器端验证失败,Model将不更新               ModelState保存验证错误的详情。                当匹配成功时: 如果接收的值是空,则会将空值分配给属性,如果无法执行空值分配,设置缺省值,ModelState.IsValid将设置为fasle。 如果空值分配成功,会考虑值是否合法,ModelState.IsValid将设置为fasle。 如果匹配不成功,参数会被设置为缺省值。在本实验中ModelState.IsValid不会受影响。 1. 如果Model调整失败,UpdateModel抛出异常。就不会使用UpdateModel的 ModelState.IsValid属性。 TryUpdateModel是将函数参数与Employee对象保持相同,如果更新失败ModelState.IsValid设置为False值。 客户端验证是什么?

    823100

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

    直接运行该程序后,一个用于编辑人员基本信息的页面会被呈现出来,如果我们在输入不合法的数据并提交后,相应的验证信息以图1所示的形式呈现出来。 具体的验证实现在重写的IsValid方法中,如果被验证的值在这个列表中,则视为验证成功并返回True。为了提供一个友好的错误消息,我们重写了方法FormatErrorMessage。 如果数据成员没有通过验证,我们通过一个ValidationResult对象封装错误消息和数据成员名称(属性名),该方法最终返回的是一个元素类型为ValidationResult的集合。 如下面的代码片段所示,IDataErrorInfo具有两个成员,只读属性Error用于获取基于自身的错误消息,而只读索引用于返回指定数据成员的错误消息。 在实现的索引中,我们将索引参数columnName视为属性名称,根据它按照上面的规则对相应的属性成员实施验证,并在验证失败的情况下返回相应的错误消息

    49280

    Asp.NetCore Web开发之输入验证

    在开发中,验证表单数据是很重要的一环,如果对用户输入的数据不加限制,那么当错误的数据提交到后台后,轻则破坏数据的有效性,重则会导致服务器瘫痪,这是很致命的。 jquery.validate.unobtrusive.js"></script> 它的用法就是在jquery代码块中键入以下代码: $('#此处引用form的id').validate({ //设置验证失败时存放错误提示的标签 此处填写要验证的input标签的name: { required: true } }, //设置验证失败错误提示 定义完成以后,将此标记添加在属性上: [StringLength(3)] [MyValidation] public string Name { get; set; } 也就是说,当Name为"12"的时候,验证出错 (error.ErrorMessage); } } ModelState.IsValid是一个bool类型的属性,指示是否验证成功。

    18430

    ASP.NET MVC 5 - 给数据模型添加校验器

    如同jQuery的客户端验证来检测到错误时,它会显示一个错误消息。 ? 如果对象含有验证错误,则Create方法会重新显示初始的form。如果没有任何错误,方法将保存信息到数据库。 如果您在浏览器中禁用了 JavaScript,客户端验证也会被禁用,HTTP POST Create方法会调用 ModelState.IsValid来检查影片是否含有任何验证错误如果您在浏览器中禁用 JavaScript,然后提交具有错误信息的form,断点将会命中。您仍然得到充分的验证,即使在没有 JavaScript的情况下。 它们自动查找模型中指定的验证属性,并显示适当的错误消息如果您想要在后面更改验证逻辑,您可以做在一个地方,将验证信息添加到模型上。 (此示例中,是movie 类)。

    57670

    七天学会ASP.NET MVC (四)——用户授权认证问题

    在 IsValid函数将返回false,表示验证失败来实现预期的功能。 除了提示用户,是否可以在当前页面显示错误信息? 是可以得,只需要为每个错误创建span 标签,默认设置为不可见,当提交按钮点击时,如果验证失败,使用JavaScript修改错误的可见性。 自动获取客户端验证还有什么方法? 当服务器端接收到请求时,服务器检测请求,查看是否存在 “Authentication Cookie”的Cookie。 如果查找到认证Cookie,服务器识别用户,验证用户是否合法。 如果是合法用户,创建认证Cookie。可用于以后的认证请求过程中。 如果是非法用户,给当前的ModelState添加新的错误信息,将错误信息显示在View中。 关于实验17 为什么Dologin添加 HttpPost 属性,还有其他类似的属性? 该属性可使得DoLogin 方法打开Post 请求。如果有人尝试获取DoLogin,将不会起作用。

    69750

    【微服务架构】微服务不是魔术:处理超时

    我们将要探讨的问题是:如果我们遇到一个非常非常慢的 API 调用最终超时,并且我们假设 (a) 它成功或 (b) 它失败,我们就会遇到错误如果您希望您的请求得到满足,您最终需要确定没有回复。你等更长的时间?你想等多久? 那么,一旦你决定等待多长时间,你采取什么行动?您是否再次尝试发送电子邮件?你尝试不同的传播媒介? 你认为他们不会这样做? 好的,现在这里到底发生了什么?我们希望看到这种请求-响应行为: 但是出了点问题。有几种可能性: 他们从来没有得到消息。 这需要最少的努力,并且可以说可以防止我们做出错误的决定,因此在许多情况下这可能是最佳选择。我们还需要问自己:我们的用户能找出正确的做法?他们是否有足够的信息和对其他系统的洞察力来确定如何前进? 消息代理也有权衡。您的用户对于何时需要重试会有自己的想法。例如,如果消息处理延迟,他们可能决定重新提交,因为他们的订单尚未显示在订单历史记录中。分布式日志/流媒体平台也可能出现类似问题。

    9010

    兄弟!kafka的重试机制,你可能用错了~

    如果数据库暂时不可用,那么当下一条消息通过时,消费者将失败。一旦数据库再次变得可用,消费者就能够再次处理该消息。 从另一个角度来看:可恢复错误指的是那些根源在消息和消费者外部的错误。 相反,它指的是某些外部资源——在此示例中为数据库——失败并最终恢复。) 关于可恢复错误需要注意的是,它们将困扰主题中的几乎每一条消息。 因此,如果消息 A 由于数据库中断而失败,那么消息 B、消息 C 等也将失败。 不可恢复错误指的是无论我们重试多少次都将失败错误如果在 Zoiee 更改到达时数据库中断已得到纠正,则这条消息将先被成功处理,然后再由 Zoë更改覆盖。 为了说明问题,这里用了 Zoiee/Zoë这样一个简单的示例。 但在这里使用多个重试主题会有用?答案是否定的。在转到 DLQ 之前,我们的消息只会经历 n 次消费失败而已。那么,为什么不从一开始就将消息粘贴在那里呢?

    94920

    ASP.NET Core教程【二】从保存数据看Razor Page的特有属性与服务端验证

    ModelState.IsValid) { return Page(); } _context.Movie.Add BindProperty标记,说明它是一个“模型绑定”对象; 当表单提交过来的时候,asp.net core负责把表单提交的数据,绑定到这个对象上; 表单提交之后,OnPostAsync方法被执行, 如果提交的数据 等于刷新了一遍页面; 大部分数据验证的工作是在客户端通过JS完成的 但是我们也不能完全依赖JS(防止模拟浏览器,恶意提交) 客户端提交上来了一个表单域是一个日期字符串,在绑定到对象属性的时候,可能产生异常,如果产生了异常 ,ModelState.IsValid就非真。 ,用于防止跨站脚本攻击; asp-validation-summary和asp-validation-for都是用于显示客户端验证的失败信息的 <label asp-for="Movie.Title"

    65550

    Bad Push-让人恍然大悟的14种错误推送方式

    曾经Facebook的运营者推送消息强调用户参与度而不是传递用户感兴趣的内容,并没有得到用户的关注。 用操控性的手段来强调交易,而不是用来做个性化的实战经验,是非常容易导致失败的。 如果你不能使自己的用户设置自己的偏好,他们很反感甚至生气,产生被推送消息强制侵入的心理。 调查显示Facebook上的用户对抒发强烈自我情感的帖子或者发布太过于频繁的消息日渐敏感,大多数用户渐渐选择屏蔽他们。试问,你愿意在凌晨三点收到一条别人在夜店嗨到不行的消息消息推送是能得到用户立即响应的唯一渠道,事实上,推送还能大大提高你打败竞争对手的可能,因为你的消息推送能得到快速回应。 11. 对推送的小错误漠不关心 在移动终端,失败的代价是很高的:就意味着失去了你与用户之间的联系。 有些推送消息确实是触到了用户无法忍受的点,比如:“请下载我们的APP吧”(我不是正在用的APP???)

    73090

    关注

    腾讯云开发者公众号
    10元无门槛代金券
    洞察腾讯核心技术
    剖析业界实践案例
    腾讯云开发者公众号二维码

    相关产品

    • 人脸融合

      人脸融合

      腾讯云神图·人脸融合通过快速精准地定位人脸关键点,将用户上传的照片与特定形象进行面部层面融合,使生成的图片同时具备用户与特定形象的外貌特征,支持单脸、多脸、选脸融合,满足不同的营销活动需求……

    相关资讯

    热门标签

    活动推荐

    扫码关注腾讯云开发者

    领取腾讯云代金券