• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

asp.netmvc模型验证-最舒服的验证方式

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

在院子里发现 http://www.cnblogs.com/yangecnu/p/3759784.html 模型验证方法

1. 一般方法 繁琐, 无数的if else, 在炎炎夏天,我见过一个验证方法3000行代码的,还要改需求,想必您能了解作为coder当时的心情。

2. 使用第三方框架,功能过于繁琐,还得自己学习,没必要

3. Code Contract 不熟悉,貌似和第三方不同的是:MS提供的,先得高大上一点而已,本质一样

下面的方法,既简单,维护也很方便。代码涉及点:

1) 模型文件代码-添加验证规则,至于你想怎么添加,可以自定义Attribute,或者使用FCL中自带的(本例即是)

2)模型数据操作的Action-在需要验证的Actiond中注入属性或者controller或者全局也行

3)过滤器-添加错误捕捉,处理

维护时,只需要修改各个业务模型中每个字段的验证规则即可

模型建立:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace Model_Validation.Models
{
    public class User
    {
        [Required(ErrorMessage = "用户名不能为空")]
        public string UserName { get; set; }

        [RegularExpression("[a-z|A-Z|0-9]{6,20}", ErrorMessage = "密码位数太短")]
        public string UserPassword { get; set; }

        [DataType(DataType.EmailAddress, ErrorMessage = "邮件格式不正确")]
        public string EmailAddress { get; set; }

        [RangeAttribute(1, 1000, ErrorMessage = "评论长度1,1000")]
        public string Comments { get; set; }
    }
}

模型数据操作:

 [HttpPost, ModelValidationFilterAttribute]
        public JsonResult DoLogin(Models.User User)
        {

            return Json(new object(), JsonRequestBehavior.DenyGet);
        }
ModelValidationFilterAttribute:数据验证的过滤器
 public class ModelValidationFilterAttribute : FilterAttribute,IActionFilter
    {
        // Summary:
        //     Called after the action method executes.
        //
        // Parameters:
        //   filterContext:
        //     The filter context.
        public void OnActionExecuted(ActionExecutedContext filterContext) { }
        //
        // Summary:
        //     Called before an action method executes.
        //
        // Parameters:
        //   filterContext:
        //     The filter context.
        public void OnActionExecuting(ActionExecutingContext filterContext)
        {
            var _MS = ((Controller)filterContext.Controller).ModelState;
            if (!_MS.IsValid)
            {
                var _FirstErrorField = _MS.FirstOrDefault();
                string strHtmlId = _FirstErrorField.Key;
                string strErrorMessage = _FirstErrorField.Value.Errors.FirstOrDefault().ErrorMessage;//这个数据你想怎么给JS都行.
            }
        }
    }

 

 

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
+关于vs2003下创建ASP.NET程序时出现的错误+发布时间:2022-07-10
下一篇:
asp.net跳转页面的三种方法比较(转)发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap