我只知道一点非常简单的关于MVC的验证

我只知道一些非常简单的关于MVC的验证

如题,我只知道一点非常简单的关于MVC的验证,所以如果您接触过MVC的验证,相信也就不用看了,这个且当作是学习笔记吧。

先小讲解一下他基本的五个从Model里打上特性标签验证的方法。

在此之前先写一下事例以证明之。

第一步,创建一个MVC的应用程序,在Model里创建一个类,我是叫的User类。里面有几个属性,Name是必须填写的,年龄需要在0到150之间,Email得符合相应的邮箱格式才可以,密码不能超过15个字符,确认密码的选项得跟第一次输入的一致。我已经写好类且特性标签也写好。


 1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel.DataAnnotations;
4 using System.Linq;
5 using System.Web;
6 using System.Web.Mvc;
7
8 namespace StudyMvcVal1.Models
9 {
10 public class User
11 {
12 [Required(ErrorMessage="姓名是必须要填写的")]
13 [StringLength(16,MinimumLength = 2,ErrorMessage = "名字不能少于两个字也不能大于16个字")]
14 public string Name { get; set; }
15
16 [Range(0,150,ErrorMessage = "年龄需要是在0到150之间才可以的")]
17 public int Age { get; set; }
18
19
20 [RegularExpression(@"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$",ErrorMessage = "请您输入正确的邮箱格式")]
21 public string Email { get; set; }
22
23 [StringLength(15,ErrorMessage = "密码长度不能超过15个字符")]
24 public string Pwd { get; set; }
25
26 [Compare("Pwd",ErrorMessage = "再次输入的密码不一致")]
27 public string ComfirmPwd { get; set; }
28
29 }
30 }

Mode里的User类

第二步,创建一个名叫User的控制器,并在此控制器里添加一个强类型的Create的页面。需要注意一下的是,得提前把项目生成一下才会选择到User这个类的。模板就选择Create.


 1 @model StudyMvcVal1.Models.User
2
3 @{
4 Layout = null;
5 }
6
7 <!DOCTYPE html>
8
9 <html>
10 <head>
11 <meta name="viewport" content="width=device-width" />
12 <title>Create</title>
13 </head>
14 <body>
15 <script src="~/Scripts/jquery-1.7.1.min.js"></script>
16 <script src="~/Scripts/jquery.validate.min.js"></script>
17 <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
18
19 @using (Html.BeginForm()) {
20 @Html.ValidationSummary(true)
21
22 <fieldset>
23 <legend>User</legend>
24
25 <div class="editor-label">
26 @Html.LabelFor(model => model.Name)
27 </div>
28 <div class="editor-field">
29 @Html.EditorFor(model => model.Name)
30 @Html.ValidationMessageFor(model => model.Name)
31 </div>
32
33 <div class="editor-label">
34 @Html.LabelFor(model => model.Age)
35 </div>
36 <div class="editor-field">
37 @Html.EditorFor(model => model.Age)
38 @Html.ValidationMessageFor(model => model.Age)
39 </div>
40
41 <div class="editor-label">
42 @Html.LabelFor(model => model.Email)
43 </div>
44 <div class="editor-field">
45 @Html.EditorFor(model => model.Email)
46 @Html.ValidationMessageFor(model => model.Email)
47 </div>
48
49 <div class="editor-label">
50 @Html.LabelFor(model => model.Pwd)
51 </div>
52 <div class="editor-field">
53 @Html.EditorFor(model => model.Pwd)
54 @Html.ValidationMessageFor(model => model.Pwd)
55 </div>
56
57 <div class="editor-label">
58 @Html.LabelFor(model => model.ComfirmPwd)
59 </div>
60 <div class="editor-field">
61 @Html.EditorFor(model => model.ComfirmPwd)
62 @Html.ValidationMessageFor(model => model.ComfirmPwd)
63 </div>
64
65 <p>
66 <input type="submit" value="Create" />
67 </p>
68 </fieldset>
69 }
70
71 <div>
72 @Html.ActionLink("Back to List", "Index")
73 </div>
74 </body>
75 </html>

页面的代码

略说一下, 页面里"@Html.ValidationMessageFor(model
=> model.属性)"也就是验证消息的地方。其信息将在此处显示。

然后,我们来看一下效果:

好的。事例完成。应该很好理解了。现在就说一下这些个验证吧。

第一个特性标签是Required,它呢就是用于非空校验的。这是校验内容是否为空的。可以在括号里写上其给我们显示的错误消息,如同这个事例里的Name.其显示的位置就是在页面的
@Html.ValidationMessageFor(model => model.Name)这里。如果没有这行代码也就验证不了的。

?




[Required(ErrorMessage="姓名是必须要填写的")]

     public
string Name { get; set; }

第二个是特性标签是Range,它是用于int或者double类型的,校验其是否在这个区间。可以在括号里写上其给我们显示的错误消息,如同这个事例里的Age.其显示的位置就是在页面的
@Html.ValidationMessageFor(model => model.Age)这里。如果没有这行代码也就验证不了的。


[Range(0,150,ErrorMessage = "年龄需要是在0到150之间才可以的")]
public int Age { get; set; }

第三个特性标签时RegularExpression,它是用于填写的内容是否符合一个正则的。第一个就是要写的一个正则表达式,第二给就是可以给我们显示的错误消息的信息了。这个就算是比较强大了点了,比如我们要验证身份证,我们只要在第一个位置写上一个符合身份证号码的正则就可以了。电话号码神马的也是如此。如同这个事例里的Email.其显示的位置就是在页面的
@Html.ValidationMessageFor(model => model.Email)这个地方。如果没有这行代码也就验证不了的。

?





1

2

[RegularExpression(@"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$",ErrorMessage = "请您输入正确的邮箱格式")]

      public
string Email { get; set; }

第四个特性标签就是StringLength,它是用于验证输入的内容不能超过的长度。如同这个事例里的Pwd.其显示的位置就是在页面的
@Html.ValidationMessageFor(model =>
model.Pwd)这个地方。如果没有这行代码也就验证不了的。它还可以验证输入内容不能少于的长度,其写法:[StringLength(16,MinimumLength
= 2,ErrorMessage = "名字不能少于两个字也不能大于16个字")]。

?




[StringLength(15,ErrorMessage = "密码长度不能超过15个字符")]

      public
string Pwd { get; set; }

第五个特性标签是Compare,它是用于两个属性的比较,比较其内容是否相同。常常用于密码验证时。第一个位置是要写它要比较的属性的名字,第二个是写相应的错误信息。如同这个事例里的ComfirmPwd.其显示的位置就是在页面的
@Html.ValidationMessageFor(model =>
model.ComfirmPwd)这个地方。如果没有这行代码也就验证不了的。另外注意这个是在和上面的Pwd的内容做比较哦。

?




[Compare("Pwd",ErrorMessage = "再次输入的密码不一致")]

    public
string ComfirmPwd { get; set; }

还有一种,我知道的就是用 ModelState,我个人的理解就是其相当于一个字典,可以向其中加入键值对的数据,其方法是:ModelState.AddModelError("这里填写key",
"这里填写错误消息,也就是value");然后在View那边就用“@Html.ValidationMessage(key)”显示错误信息,如果有用RAZOR引擎的话。我倒没怎么用过这个方法,我一向将key写成空,然后在View那边验证的话就是用的"@Html.ValidationSummary(true)"来显示错误消息。比如看一下我以前写的一个OA的例子。

?





1

2

3

4

5

6

7

8

9

10

11

//这里是控制器的代码,部分代码省略。

DateTime startTime = DateTime.Parse(dl);

                DateTime nowTime = DateTime.Now;

                DateTime newTime = startTime.AddDays(4);

                //if (newTime < nowTime)

                if(nowTime>newTime)

                {

                    ModelState.AddModelError("", "错误提示:超过三天,不能申请");

                    BindHourMinuter();//这行代码有什么作用?绑定时间!

                    return
View(leaves);

                }

?





1

2

3

4

5

6

7

8

9

10

11

12

//依旧是部分代码,这里是Create里的代码。

</table>

        <p>

            <input  class="submit ui-state-default ui-corner-all"
type="submit"
value="创建"
/>    

       @Html.ActionLink("返回列表", "Index")

        </p>

        <tr>

      @*  成功修改于0415d*@

        <p>

                 @Html.ValidationSummary(true)//错误消息将在此处显示。返回列表的下面,和下面的效果图对比一下吧。

        </p>

    </fieldset>

效果:

我所知道的MVC的验证方式了也就这么点。希望园友们感兴趣的园友们指点指点,共同进步。另外有两个问题,如果园友有知道的可以告之一下,我们发现我OA的那个项目中,提示的颜色是红的,那么,怎么在第写的第一个事例中也将其验证消息改为红色呢。第二个,依旧和第一个事例有点关,就是说我这里有一个类,里面有一些属性,是用的MODELFIRST,我想这这个里面加上一些验证,后来又改了下模型,然后重新生成了一下T4模板,然后,打的特性就全部都没有了,关于这个问题是应该怎么解决呢。

我只知道一点非常简单的关于MVC的验证

时间: 2024-10-06 01:19:50

我只知道一点非常简单的关于MVC的验证的相关文章

python学习之最简单的用户注册及登录验证小程序

文章都是从我的个人博客上粘贴过来的哦,更多内容请点击 http://www.iwangzheng.com 正如很多同学所知道的,楼主开始学习python了,前进的道路曲曲折折,有荆棘也有陷阱,从最简单的小程序写起,每天练习,将python进行到底. 有一点比较别扭的就是python的换行之后空四个空格,ruby都是两个,并且python在方法和循环语句的第一句都要加冒号 mysql> show create table user; mysql> alter table user add sal

简单的JS表单验证效果代码

简单的JS表单验证代码:表单验证几乎是不可缺少的,有的表单验证是在后台完成的,有的则是使用JavaScript在在前端完成基本的验证,这样可以有效的减轻服务器的压力,下面就介绍一下JS实现的最简单的表单验证.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://w

来写一个简单的PHP MVC结构

MVC结构,其实就是三个Model,Contraller,View单词的简称,Model,主要任务就是把数据库或者其他文件系统的数据按照我们需要的方式读取出来.View,主要负责页面的,把数据以html的形式显示给用户.Controller,主要负责业务逻辑,根据用户的 Request进行请求的分配,比如说显示登陆界面,就需要调用一个控制器userController的方法loginAction来显示.云鼎娱乐城 下面我们用PHP来创建一个简单的MVC结构系统. 首先创建单点入口,即bootst

史上最简单的 Spring MVC 教程(十)

1 前言 在史上最简单的 Spring MVC 教程(九)中,咱们已经实现了图片的上传及显示功能,那么接下来,在本篇博文中,咱们更进一步,以实体类(Person)中的字段"name"和控制器(PersonController)中的方法 updatePersonList 为例,实现参数的校验功能. 2 注解示例 - 参数校验 老规矩,首先给出项目结构图: 在给出代码之前, 咱们先明确参数校验的步骤: 导入参数校验的 jar 包: 在实体上配置需要校验的属性: 在控制器的方法中用注解 @V

【Spring】搭建最简单的Spring MVC项目

每次需要Spring MVC的web项目测试一些东西时,都苦于手头上没有最简单的Spring MVC的web项目,现写一个. > 版本说明 首先要引入一些包,Spring的IOC.MVC包就不用说了.还有Jackson的包,因为默认情况下Controller的方法如要返回Json,用的是此框架. <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>

Spring学习(二)——使用用Gradle构建一个简单的Spring MVC Web应用程序

1.新建一个Gradle工程(Project) 在新建工程窗口的左侧中选择 [Gradle],右侧保持默认选择,点击next,模块命名为VelocityDemo. 2.在该工程下新建一个 module,在弹出的窗口的左侧中选择 [Gradle],右侧勾选[Spring MVC],如下图所示: 并勾选[Application server],下方选择框中选择Tomcat7.0,如无该选项,则选中右边的 [ New... ] -- [ Tomcat Server ], 配置 Tomcat .配置好后

简单的js表单验证框架

/** * 通常在我们的HTML页面表单中有大量的数据验证工作, * 免不了要写很多验证表单的js代码,这是一项非常繁琐 * 枯燥的工作.很多程序员也会经常遗漏这项工作.当然 * 一些JavaEE框架中有一些比较好的验证框架提供给我们 * 使用,但是也是需要很多繁琐的配置,页面查看起来也 * 不是很方便.一般程序员使用的也不多.所以写了这一 * 段JavaScript代码提供给大家使用.算是一个简单的 * JavaScript验证框架吧.使用起来很简单,配合下面几 * 种标签使用,能实现大多数表

简单的Jquery表单验证

本段代码举了一个最简单的表单验证实例,就是判断输入框是否为空而已,大家可以根据这个原理,加入正则表达式判断,实现各种功能强大的表单验证功能 <html>    <head>        <title>Validate empty fields</title>        <style type="text/css">            body{font-family:"Trebuchet MS",

让工作节奏慢一点, 再简单的工作也能做出大成就

快,是当下的工作主旋律.拿到任务,快刀斩乱麻,达成目标交差.甚至同时处理多个事务,一天到晚忙前忙后.一旦闲下来,便觉缺少了存在感.这未必是什么好事,事情做得比较浅,经验不能有效的积累,最终其实还是快不了,还反而让情绪受工作牵制.相对于这种做事做到恰到好处的做法,我更喜欢要做就往大了做.       从一个任务的表面来看,做出结果就算完事,这是结果导向.你要一份报告,我就给你一份报告.解一个Bug, 就保证这个Bug正常,扩展一下没有问题就好.如果真得很紧急,这样做是理所当然,这时候慢下来就不合适