博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MVC最为标准的添加操作(从实体验证到实体入库)
阅读量:7083 次
发布时间:2019-06-28

本文共 2367 字,大约阅读时间需要 7 分钟。

以用户注册为例,来说一下MVC中向数据表中添加数据的方法

从WEB层说起:有两个action,分别实现显示注册界面和提交注册请求的作用,在action中,对表单实体进行了数据有效性的验证,代码如下:

public ActionResult Register()       {           return View();       }       [HttpPost]       public ActionResult Register(UserBases entity)       {           if (entity.IsValid)           {               if (iUserRepository.RegisterUser(entity).IsComplete)               {                   #region 写′cookies                   #endregion                   return RedirectToAction("RegSuccess", "Account");               }               else               {                   ModelState.AddModelError("", "注¢册á用?户§失§败ü");               }           }           else           {               entity.GetRuleViolations().ToList().ForEach(i =>               {                   ModelState.AddModelError(i.PropertyName, i.ErrorMessage);               });           }           return View();       }省略一下BLL层,直接用DATA层了,它主要有个性操作接口和统一操作接口,一个实体操作分别要继承这两个接口,及一个提代数据库上下文和CURD操作的基类,代码如下:
public class UserRepository : Car_RentalRepositoryBase, IUserRepository    {        #region IUserRepository 成é员±        public VMessage RegisterUser(UserBases entity)        {            VMessage vm = new VMessage();            try            {                base.InsertEntity(entity);                vm.IsComplete = true;            }            catch (Exception)            {                vm.IsComplete = false;                throw;            }            return vm;        }

}

这个类的结构如下:

DATA层向WEB层返回信息是统一的消息对象VMessage,它个类由一个bool型的属性和一个实体对象组成。

最后说明一点,就是在MVC模式下,进行前台表单验证时,直接用ModelState.AddModelError方法就可以把错误信息直接绑定到属性的上面,非常方便,在调用时

代码如下:

entity.GetRuleViolations().ToList().ForEach(i => { ModelState.AddModelError(i.PropertyName, i.ErrorMessage); });

还有一个要说明的就是GetRuleViolations这个方法,它是我们在实体中定义的,将所有不通过证明的信息,以迭代的方式进行返回,代码如下:

/// <summary> 

    /// 用户实体数据级验证(数据有效性验证) 
    /// </summary> 
    public partial class UserBases 
    { 
        public override IEnumerable<RuleViolation> GetRuleViolations() 
        { 
            if (string.IsNullOrEmpty(this.UserID)) 
                yield return new RuleViolation(ValidatorMessage.Current.GetMessage(ValidatorMessageType.RequiredField, "UserID"), "UserID"); 
            if (string.IsNullOrEmpty(this.Email)) 
                yield return new RuleViolation("请输入电子邮件", "Email");

            if (string.IsNullOrEmpty(this.Name)) 

                yield return new RuleViolation("用户名不能为空", "Name");

        }

   }

大家如果对MVC实体验证有什么好的方式可以给我留言。

本文转自博客园张占岭(仓储大叔)的博客,原文链接:,如需转载请自行联系原博主。

你可能感兴趣的文章
django项目设计
查看>>
[iOS]如何给Label或者TextView赋HTML数据
查看>>
C# To IL(四)
查看>>
监听时间变动事件Intent.ACTION_TIME_TICK
查看>>
MarkChanges: Jmeter
查看>>
Data truncation: Incorrect datetime value: 'May 15, 2019 4:15:37 PM
查看>>
JS Date.Format
查看>>
程序员的十大经验和教训
查看>>
数据生成树 ---新增
查看>>
#if和#ifdef区别
查看>>
cpu故障定位 top strace pstack
查看>>
[转] 多进程 join && daemon
查看>>
centos下将系统预置yum源更换为阿里云源
查看>>
Shell.Users 提权
查看>>
Spring通过注解注入有参
查看>>
HttpServletRequest应用(转)
查看>>
java.lang.ClassNotFoundException: org.apache.juli.logging.LogFactory的解决办法
查看>>
NGUI类关系图
查看>>
【java集合框架源码剖析系列】java源码剖析之HashSet
查看>>
【java】spring项目中 对entity进行本类间的克隆
查看>>