读书人

Asp.net MVC 透过Attribute验证datamo

发布时间: 2012-09-07 10:38:15 作者: rapoo

Asp.net MVC 通过Attribute验证datamodel(一)

1. 除了可以使用Required, StringLength等Attribute,asp.net mvc中还可以自定义属于自己的验证Attribute。

例如:

//验证逻辑就是判断专辑的Title是否包含某一个关键字    public class AlbumTitleValidateAttribute : ValidationAttribute    {        private readonly string _keyword;        public AlbumTitleValidateAttribute(string keyword)        {            if (string.IsNullOrEmpty(keyword))                throw new Exception("invalid usage");            _keyword = keyword;        }        protected override ValidationResult IsValid(object value, ValidationContext validationContext)        {            if (value != null && value.ToString().ToUpper().Contains(_keyword.ToUpper()))            {                return ValidationResult.Success;            }            else                return new ValidationResult(string.Format("Title does not contain the keyword({0})", _keyword));        }    }


2.定义DataModel,并且使用上面定义的attribute

public class Album    {        public int ID { get; set; }        [Required]        [AlbumTitleValidateAttribute("月亮")]        public string Title { get; set; }        [Required]        [StringLength(3)]        public string Author { get; set; }    }


这里定义专辑的Title必须包含有“月亮”二字

3. 绑定属性到前台页面

@using (Html.BeginForm("Index", "Home", FormMethod.Post)){    <p>        @Html.EditorFor(m => m.Title)        @Html.ValidationMessageFor(m => m.Title)    </p>    <p>        @Html.EditorFor(m => m.Author)        @Html.ValidationMessageFor(m => m.Author)    </p>    @Html.HiddenFor(m => m.ID)                              <input type="submit" value="submit" />}


4. 添加Action在Controller.

[HttpPost]        public ActionResult Index(Album album)        {            if (ModelState.IsValid)            {                return RedirectToAction("About");            }            return View(album);        }


运行程序,然后就可以在前台页面修改一些值,看到验证效果

读书人网 >ASP

热点推荐