一、平常状况
关于使用过MVC框架的人来讲,对MVC的数据考证不会生疏,比方,我有一个Model以下:
public class UserInfo { [Required(ErrorMessage = "UserName不可为空1111")] public string UserName { get; set; } public string Sex { get; set; } public string Mobile { get; set; } public string Address { get; set; } }
前端:
@using (Html.BeginForm()) { @Html.AntiForgeryToken() <p class="form-horizontal"> <h4>UserInfo</h4> <hr /> @Html.ValidationSummary(true, "", new { @class = "text-danger" }) <p class="form-group"> @Html.LabelFor(model => model.UserName, htmlAttributes: new { @class = "control-label col-md-2" }) <p class="col-md-10"> @Html.EditorFor(model => model.UserName, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.UserName, "", new { @class = "text-danger" }) </p> </p> <p class="form-group"> @Html.LabelFor(model => model.Sex, htmlAttributes: new { @class = "control-label col-md-2" }) <p class="col-md-10"> @Html.EditorFor(model => model.Sex, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Sex, "", new { @class = "text-danger" }) </p> </p> <p class="form-group"> @Html.LabelFor(model => model.Mobile, htmlAttributes: new { @class = "control-label col-md-2" }) <p class="col-md-10"> @Html.EditorFor(model => model.Mobile, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Mobile, "", new { @class = "text-danger" }) </p> </p> <p class="form-group"> @Html.LabelFor(model => model.Address, htmlAttributes: new { @class = "control-label col-md-2" }) <p class="col-md-10"> @Html.EditorFor(model => model.Address, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Address, "", new { @class = "text-danger" }) </p> </p> <p class="form-group"> <p class="col-md-offset-2 col-md-10"> <input type="submit" value="Create" class="btn btn-default" /> </p> </p> </p> }
结果:
是的,MVC能够经由过程对一些属性增添肯定的特征来对数据举行考证。这对人人来讲能够并不生疏。
如果仅仅是如许就完事了,那末也就没事么意义了。
二、经常使用状况
在现实的开辟中,我们大都是经由过程EF,或许其他体式格局,使得数据库中的每个表或视图,都在代码中对应的一个类模子,关于经由过程数据库生成的模子,我们不宜修正,退一步讲,纵然我们在这个类中对一些属性增添一些数据考证的特征,那末,数据库发生变化后,如果我再从新生成这些Model,我们之前增添好的考证特征将没有了,那末,我们怎样处理如许的题目呢?
如果:
public class UserInfo { public string UserName { get; set; } public string Sex { get; set; } public string Mobile { get; set; } public string Address { get; set; } }
UserInfo是经由过程数据库生成的一个模子,关于数据库生成的模子,我们不宜修正。但那是,我们又需要对这个模子中的某些属性举行数据考证,比方需要对UserName属性举行非空考证,那末我们怎样做呢?
人人通常会想到部分类,是的,我们能够经由过程部分类来处理上述题目。
起首,我们将模子中的类加上关键字 partial ,然后我们再写一个这个模子的部分类。
public partial class UserInfo { [Required(ErrorMessage = "UserName不可为空1111")] public string UserName { get; set; } }
然则,如许会提醒我们一个毛病,就是类中存在反复的属性,是的,部分类中,属性是不能够重名的。那末,我们该怎么办呢,MVC框架已给了我们处理方案了。
我们能够这么写:
[MetadataType(typeof(MeteUserInfo))] public partial class UserInfo { private class MeteUserInfo { [Required(ErrorMessage = "UserName不可为空1111")] public string UserName { get; set; } } }
如许,我们上述的题目就水到渠成了
以上就是对MVC举行数据考证详解的细致内容,更多请关注ki4网别的相干文章!