首页 > 代码库 > MVC之校验
MVC之校验
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="http://www.mamicode.com/~/Scripts/jquery-1.8.2.min.js"></script> <script src="http://www.mamicode.com/~/Scripts/jquery.validate.min.js"></script> <script src="http://www.mamicode.com/~/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="http://www.mamicode.com/Create" /> </p> </fieldset> } <div> @Html.ActionLink("Back to List", "Index") </div> </body> </html>
使用强类型视图生成的页面如上面的代码所示,如果不是是使用强类型进行创建页面的话,没法进行与UserInfo映射,也就没法讲UserInfo上的特性标签,翻译成相应的代码,上面的代码添加了相应的校验代码。
<script src="http://www.mamicode.com/~/Scripts/jquery-1.8.2.min.js"></script>
<script src="http://www.mamicode.com/~/Scripts/jquery.validate.min.js"></script>
<script src="http://www.mamicode.com/~/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;} } }
MVC之校验