MVC简单校验的步骤
1.创建相应的实体类。
public class UserInfo
{
[Required(ErrorMessage ="用户名不能为空")]
public string UserName { get; set; }
[Required (ErrorMessage ="密码不能为空")]
public string PassWord { get;set; }
}
常用的检验特性标签:Required StringLength Range RegularExpression 四个,一个属性ErroorMessage,用来指示相应的错误信息
2.为实体类添加相应的校验标签(CodeFirst中使用过这些属性标签)
3.创建实体类型的强类型页面(确保名称一致,实现自动映射),MVC 专门为强类型页面实现的校验
@model MVCCRUD.Models.UserInfo
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>CreateUser</title>
</head>
<body>
<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<legend>UserInfo</legend>
<div class="editor-label">
@Html.LabelFor(model => model.UserName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.UserName)
@Html.ValidationMessageFor(model => model.UserName)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.PassWord)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.PassWord)
@Html.ValidationMessageFor(model => model.PassWord)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
</body>
</html>
使用强类型视图生成的页面如上面的代码所示,如果不是是使用强类型进行创建页面的话,没法进行与UserInfo映射,也就没法讲UserInfo上的特性标签,翻译成相应的代码,上面的代码添加了相应的校验代码。
<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
这三个js文件就是封装了相应校验的逻辑,第三个js就是隐式校验的文件,因为我们并没有看见相应的校验的逻辑,全部都已经隐式了,此时前端的代码中会产生很多校验的属性。
4.效果展示
这种方式是MVC提供的一种针对强类型页面的校验方式,当然我们可以使用我们习惯的手动写一些Js校验的脚本。
5.MVC校验与EF中的Model相结合
首先当EF创建出相应的MOdel后,然后向model中属性添加特性标签,此时没有什么太大的问题,但是当我需要在手动使用EF模板引擎创建一个实体后,此时原来的在前一个model类中的属性标签就已经没有了。
(1)创建一个校验类(与EF中相应的model类位于同一个命名空间,同时属性的名字是完全一致的)
NameSpace Model
{
public class UserInfoValidate
{
[Required(ErrorMessage)]
public string UserName{get;set;}
[Required(ErrorMessage)]
public string PassWord{get;set;}
}
[MetaDataType(typeof(UserInfoValidte))]
public partial UserInfo
{
public stirng UserName{get;set;}
public string PassWord{get;set;}
}
}