Blazor University (31)表单 —— 验证

原文链接:https://blazor-university.com/forms/validation/

验证

源代码[1]

DataAnnotationsValidator 是 Blazor 中的标准验证器类型。在 EditForm 组件中添加此组件将启用基于 System.ComponentModel.DataAnnotations.ValidationAttribute 的 .NET 属性的表单验证。

首先,我们将创建一个简短的示例,然后我们将了解幕后发生的事情。首先,创建一个我们可以编辑的模型,并用一些数据注释装饰它的属性以进行验证。

public class Person
{[Required]public string Name { get; set; }[Range(18, 80, ErrorMessage = "Age must be between 18 and 80.")]public int Age { get; set; }
}
  • 第 3 行指定 Name 属性不能为 null 或为空。

  • 第 5 行为 Age 属性指定了一个有效的值范围(从 18 到 80),并且还提供了一个合适的错误消息来显示给用户。

添加验证

在默认 Blazor 应用中编辑 Index.razor 页面,并提供一些标记来编辑 Person 的实例。

<EditForm Model=@Person><div class="form-group"><label for="Name">Name</label><InputText @bind-Value=Person.Name class="form-control" id="Name" /></div><div class="form-group"><label for="Age">Age</label><InputNumber @bind-Value=Person.Age class="form-control" id="Age" /></div><input type="submit" class="btn btn-primary" value="Save"/>
</EditForm>@code {Person Person = new Person();
}

现在运行应用程序将导致向用户显示一个不验证其输入的表单。为了确保表单得到验证,我们必须指定一个验证机制。在 EditForm 组件内添加一个 DataAnnotationsValidator 组件。

<EditForm Model=@Person><DataAnnotationsValidator/><div class="form-group"><label for="Name">Name</label><InputText @bind-Value=Person.Name class="form-control" id="Name" /></div><div class="form-group"><label for="Age">Age</label><InputNumber @bind-Value=Person.Age class="form-control" id="Age" /></div><input type="submit" class="btn btn-primary" value="Save"/>
</EditForm>

运行应用程序并单击“保存”按钮将更新用户界面,以提供用户输入中存在错误的视觉指示。

18baa61d83e49c9da519f56fa0857175.png

显示验证错误消息

可以通过两种方式向用户显示验证错误消息。我们可以添加一个 ValidationSummary 来显示表单中所有错误的完整列表。我们还可以使用 ValidationMessage 组件来显示表单上特定输入的错误消息。这些组件不是相互排斥的,因此可以同时使用它们。

ValidationSummary 组件可以简单地放入我们标记中的 EditForm 中;根本不需要额外的参数。

5c53168947d74eb62faf731626a3db2d.png

由于 ValidationMessage 组件显示单个字段的错误消息,它要求我们指定字段的标识。为了确保我们的参数值在重构后保持正确(例如,当我们重构 Person 类的属性名称时)Blazor 要求我们在识别字段时指定一个表达式。名为 For 的参数在 ValidationMessage 上定义如下:

[Parameter]
public Expression<Func<T>> For { get; set; }

这意味着我们应该使用 lambda 表达式来指定字段的标识,该表达式可以“双引号”或包裹在 @(...)

  • 双引号

    <ValidationMessage For="() => Person.Name"/>
  • Razor 表达式

    <ValidationMessage For=@( () => Person.Name )/>

两种形式是等价的。带引号的形式更容易阅读,而 razor 表达式使其他开发人员更清楚我们定义的是表达式而不是字符串。

@page "/"
@using Models<EditForm Model=@Person><DataAnnotationsValidator/><ValidationSummary/><div class="form-group"><label for="Name">Name</label><InputText @bind-Value=Person.Name class="form-control" id="Name" /><ValidationMessage For="() => Person.Name"/></div><div class="form-group"><label for="Age">Age</label><InputNumber @bind-Value=Person.Age class="form-control" id="Age" /><ValidationMessage For=@(() => Person.Age) /></div><input type="submit" class="btn btn-primary" value="Save"/>
</EditForm>@code {Person Person = new Person();
}

7e1bcd13e03a8f4116a447d466aa65d6.png

参考资料

[1]

源代码: https://github.com/mrpmorris/blazor-university/tree/master/src/Forms/ValidatingUserInput

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

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

相关文章

CSDN,CNBLOGS博客文章一键转载插件 终于更新了!

之前&#xff0c;Shawn Chou等朋友一直建议插件支持cnblogs文章转载&#xff0c;但一直没时间修改插件&#xff0c;今天晚上抽时间将插件进行了升级&#xff0c;可以支持 CSDN,CNBLOGS博客文章的一键转载。时间仓促&#xff0c;难免有各种问题&#xff0c;欢迎提出建议&#xf…

ROS2_Control官方资料+运动控制

Getting Started — ROS2_Control: Rolling Dec 2023 documentation Getting Started Edit on GitHub Youre reading the documentation for a development version. For the latest released version, please have a look at Iron. Getting Started Installation Binar…

三、教你搞懂渐变堆叠面积图《手把手教你 ECharts 数据可视化详解》

注&#xff1a;本系列教程需要对应 JavaScript 、html、css 基础&#xff0c;否则将会导致阅读时困难&#xff0c;本教程将会从 ECharts 的官方示例出发&#xff0c;详解每一个示例实现&#xff0c;从中学习 ECharts 。 ECharts 官方示例&#xff1a;https://echarts.apache.o…

试用了多款报表工具,终于找到了基于.Net 6开发的一个了

Part1前言上一个月有一个项目需要用到数据分析&#xff0c;将老板感兴趣的数据给他整理成一个面板&#xff0c;方便他实时查看&#xff0c;于是自己了解到了BI,当时我们项目就用了metabase&#xff0c;metabase是一款开源的BI分析工具&#xff0c;开发语言clojureReact为主。就…

4种CSS文字竖排方法

2019独角兽企业重金招聘Python工程师标准>>> 有时候&#xff0c;我们需要对网页某个区域的文字竖排&#xff0c;竖向排列&#xff0c;横向的当然大家都见惯了&#xff0c;对于竖排&#xff0c;一时间找不到思路了&#xff0c;呵呵&#xff0c;其实和横排一样简单&am…

【ArcGIS风暴】ArcGIS10.6创建LAS数据集的两种方法并加载点云数据

文章目录 1. 使用上下文菜单创建 LAS 数据集2. 使用地理处理工具创建 LAS 数据集3. 显示LAS数据集LAS 数据集是位于文件夹中的独立文件,并且引用 LAS 格式的激光雷达数据和用于定义表面特征的可选表面约束要素。可使用创建 LAS 数据集工具或 ArcCatalog 中文件夹的上下文菜单快…

关于建立北京市专业技术人员职业资格与职称对应关系的通知

原文地址 http://www.bjrbj.gov.cn/xxgk/gsgg/201906/t20190605_82857.html 附件 北京市专业技术人员职业资格与职称对应表 &#xff08;46项&#xff09; 一、准入类职业资格 序号 资格名称 可聘专业技术职务 1 注册消防工程师 一级注册消防工程师&#xff1a;工程师 二…

【Pix4d精品教程】Pix4d项目空三结果精度评估完整解决方案

《无人机航空摄影测量精品教程》合集目录(Pix4d、CC、EPS、PhotoScan、Inpho) 文章目录 一、单体项目评估二、整体项目评估在航测项目内业工作中,不管是垂直摄影,还是倾斜摄影,最核心的部分是空三加密,一个很重要的基础是共线方程。空三结果的精度是航测的基本要求,也会…

2016 10 26考试 NOIP模拟赛 杂题

Time 7&#xff1a;50 AM -> 11&#xff1a;15 AM 感觉今天考完后&#xff0c;我的内心是崩溃的 试题考试包 T1&#xff1a; 首先看起来是个贪心&#xff0c;然而&#xff0c;然而&#xff0c;看到那个100%数据为n < 2000整个人就虚了&#xff0c;发呆接近两小时后意识到…

[转]RxHttp 一条链发送请求,新一代Http请求神器(一)

简介 RxHttp是基于OkHttp的二次封装&#xff0c;并于RxJava做到无缝衔接&#xff0c;一条链就能发送一个完整的请求。主要功能如下&#xff1a; 支持Get、Post、Put、Delete等任意请求方式&#xff0c;可自定义请求方式支持Json、DOM等任意数据解析方式&#xff0c;可自定义数据…

【Pix4d精品教程】Pix4d空三后处理:点云分类与过滤、DSM精编生成DEM、生成等高线案例详解

《无人机航空摄影测量精品教程》合集目录(Pix4d、CC、EPS、PhotoScan、Inpho) DEM结果预览: 等高线结果预览: Pix4d内业空三结束后,会生成点云,DOM和DSM等产品,一般情况下,DOM精度不达标(如房屋边缘有噪点)的话,可以直接在镶嵌图编辑器进行DOM的编辑,然而后处理的…

git分支进阶

其实git除了版本控制&#xff0c;另外一个最突出的特点就是他的分支操作。简直 丝滑~.git也是多人协作的必备武器。 通常我们正常情况下只需要master 和 develop分支就够了。 这里我们先以这两条分支作为基准&#xff0c;进行一系列的操作。 开发新功能流程 这个应该属于develo…

关于c# .net爬虫

刚开始听到爬虫这两个字眼的时候感觉挺稀奇的&#xff0c;之前并没有接触过爬虫&#xff0c;正好这会手上没事&#xff0c;于是便百度了一下。 1.网络爬虫&#xff08;又被称为网页蜘蛛&#xff0c;网络机器人&#xff0c;在FOAF社区中间&#xff0c;更经常的称为网页追逐者&am…

【Pix4d精品教程】Pix4d中央子午线细化设置(测区跨两个分带)

《无人机航空摄影测量精品教程》合集目录(Pix4d、CC、EPS、PhotoScan、Inpho) 航测内业中,在自由空三结束之后,需要导入像控点,进而去刺像控点。但是当测区跨两个分带的时候(如测区正好处在3度带105和108中间),像控点可能距离靶标点很远,给刺点带来了很大难度。怎样解…

Failed:(13: Permission denied)导致访问浏览器出现Nginx 500 Internal Server Error

1 、问题 我在部署nginx反向代理服务器的时候&#xff0c;nginx.conf文件都配置好了&#xff0c;但是我在浏览器里面输入域名的时候&#xff0c;提示Nginx 500 Internal Server Error 2、分析 我们需要找到nginx输出错误日志的文件&#xff0c;在nginx.conf里面我们可以看到错…

MAUI与Blazor共享一套UI,媲美Flutter,实现Windows、macOS、Android、iOS、Web通用UI

1. 前言距离上次发《MAUI初体验&#xff1a;爽》一文已经过去2个月了&#xff0c;本计划是下半年或者明年再研究MAUI的&#xff0c;现在计划提前啦&#xff0c;因为我觉得MAUI Blazor挺有意思的&#xff1a;在Android、iOS、macOS、Windows之间共享UI&#xff0c;一处UI增加或者…

dns 报文格式

最近学习了下DNS的格式&#xff0c;发现很多内容都是转载自同一个而且说的不是很清楚&#xff0c;特再整理下具体可以查看RFC1035 http://www.ietf.org/rfc/rfc1035.txt有详细的解释对于英语理解不是很好和懒得看这么长的可以看下本文首先是DNS数据帧的格式-------------------…

【Pix4d精品教程】Pix4d修编正射影像DOM的两种方法案例详解

《无人机航空摄影测量精品教程》合集目录(Pix4d、CC、EPS、PhotoScan、Inpho) DOM修编前: DOM修编后: 文章摘要: Pix4d内业数据处理通常会生成点云、DSM和DOM等产品,DSM经过精编可以生成精准的DEM,而DOM一般情况下,存在比如房屋边缘被拉花,或者存在噪点的情况

终于找到了,开源的Vue3+.NET6通用管理后台!

据说80%的.NET项目都是管理后台&#xff0c;然而能用上Vue3.NET6的管理后台并不多见。这里分享一套Vue3 Axios TS Vite ElementUI Plus .NET 6 WebAPI JWT SqlSugar的前后端分离架构的通用管理后台源码数据库脚本&#xff0c;还有与之配套录制的一组视频教程&#xff0c;全部打…

【Pix4d精品教程】Pix4d模型成果导出OSGB并加载OSGB到EPS进行三维测图完美案例教程

《无人机航空摄影测量精品教程》合集目录(Pix4d、CC、EPS、PhotoScan、Inpho) 在垂直摄影中,Pix4d也可以生成漂亮的三维模型,并导出为OSGB,加载到EPS进行三维测图。首先来看生成的三维格网纹理和EPS三维模型加载效果。 Pix4d生成的三维格网纹理: EPS加载OSGB模型效果: 文…