思路
在对象初始化的时候进行的错误验证,mvc是viewdate传递的,而接收的时候如果是以表单提交,表单所有数值均是对象的属性的时候,在属性初始化的时候会进行判断的,具体步骤如下
第一步,在对象中增加
[MetadataType(typeof(SYS_autoan))]
public partial class autoan //这个是与对象相同的名字,对象名字要是autoan
{
class SYS_autoan
{
[Display(Name = "关键字z")]
[Required(ErrorMessage = "请输入关键字,提问者提问关键字.")]
[StringLength(20, ErrorMessage = "输入内容过长.")]
public string keywords { get; set; }
[Display(Name = "输入回复")]
[Required(ErrorMessage = "请输入回复,")]
[StringLength(2000, ErrorMessage = "输入内容过长.")]
public string content { get; set; } [DisplayName("密码")]
[Required(ErrorMessage = "密码不能为空")]
[DataType(DataType.Password)]
public string Password { get; set; } [RegularExpression(@"^\d+$", ErrorMessage = "排序号必须是大于0的数字")]
[Range(0,100000)]
public int? SORT_NUM { get; set; } [Required(ErrorMessage="请填写手机号,手机号仅仅用于关联老师的微信号")]
[RegularExpression(@"^1\d{10}$",ErrorMessage="必须是1起始的,11位数字")]
public string CELL_NO { get; set; }
[RegularExpression(@"^\d+$", ErrorMessage = "请选择一个科室,不支持录入科室")]
[Required(ErrorMessage = "请选择科室")]
public string S_ORG_ID { get; set; }
}}
作为model的一部分,也是验证, 其中
Display 前台是 @Html.LabelFor(model => model.keywords) 出现的
ErrorMessage 是 @Html.ValidationMessageFor(model => model.keywords),
[DataType(DataType.Password)] 是可以进行类型筛选的
[StringLength(2000, ErrorMessage = "输入内容过长.")] 对长度进行筛选
[RegularExpression(@"^\d+$", ErrorMessage = "请选择一个科室,不支持录入科室")] 正则
第二步,在 action中应该如下设置
//默认的
public ActionResult addauto()
{
return View();
}
//提交过来的
[HttpPost]
public ActionResult addauto(MODEL.autoan nr)
{
if (ModelState.IsValid)
{
string aa = "";//在这里是需要做的操作
}
//ModelState.AddModelError("keywords", "提供的用户名或密码不正确。");可以任意增加错误提示给指定错误提示
return View(nr);
}
第三步,在 view中应当如下配置
头部
@model MODEL.autoan //强制类型
@{
Layout = null;
Html.EnableClientValidation(true); //开启客户端验证
}
< !DOCTYPE html>
。。。。。
中间部分
@using (Html.BeginForm("addauto", "admin", FormMethod.Post))
{
@Html.ValidationSummary(true) //这里是只显示模型及错误,这个错误通过ModelState.AddModelError("", "提供的用户名或密码不正确。");定义,注意定义的关键字需要为空,有关键字会不显示
@Html.ValidationMessageFor(model => model.keywords) //在错误ErrorMessage提示中的提示
------ @Html.LabelFor(model => model.keywords) //在错误Display提示中的提示 <input type="submit" value="提交" /> }
经过以上设置就可以了
更多参考资料 http://www.oschina.net/question/565065_68411
http://www.oschina.net/question/565065_68411