MVC最为标准的添加操作(从实体验证到实体入库)

简介:

以用户注册为例,来说一下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;

        }

}

这个类的结构如下:

image

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实体验证有什么好的方式可以给我留言。

本文转自博客园张占岭(仓储大叔)的博客,原文链接:MVC最为标准的添加操作(从实体验证到实体入库),如需转载请自行联系原博主。

目录
相关文章
|
8天前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
50 0
|
8月前
|
存储 前端开发 Java
Spring MVC 中的数据绑定和验证机制是什么,如何使用
Spring MVC 中的数据绑定和验证机制是什么,如何使用
|
9月前
|
前端开发 Java Spring
Java Spring MVC 图片上传操作详解
在现代的Web开发中,图片上传是一个非常常见的需求。而Java Spring MVC框架则是JavaWeb开发中常用的框架之一。本文将介绍如何在Java Spring MVC框架中实现图片上传操作。
91 0
|
10月前
|
前端开发 Java 数据库
欢迎来到Jsp编程课时十二——今天实现的目标是。@1将数据库的数据发送到浏览器。@2利用浏览器实现对数据库的增删改查操作。@3理解MVC三层架构的定义。(三)
欢迎来到Jsp编程课时十二——今天实现的目标是。@1将数据库的数据发送到浏览器。@2利用浏览器实现对数据库的增删改查操作。@3理解MVC三层架构的定义。(三)
80 0
|
10月前
|
前端开发 Java 数据库
欢迎来到Jsp编程课时十二——今天实现的目标是。@1将数据库的数据发送到浏览器。@2利用浏览器实现对数据库的增删改查操作。@3理解MVC三层架构的定义。(二)
欢迎来到Jsp编程课时十二——今天实现的目标是。@1将数据库的数据发送到浏览器。@2利用浏览器实现对数据库的增删改查操作。@3理解MVC三层架构的定义。(二)
49 0
|
10月前
|
前端开发 搜索推荐 Java
欢迎来到Jsp编程课时十二——今天实现的目标是。@1将数据库的数据发送到浏览器。@2利用浏览器实现对数据库的增删改查操作。@3理解MVC三层架构的定义。(一)
欢迎来到Jsp编程课时十二——今天实现的目标是。@1将数据库的数据发送到浏览器。@2利用浏览器实现对数据库的增删改查操作。@3理解MVC三层架构的定义。(一)
65 0
|
11月前
|
前端开发 Java Spring
《Spring MVC》 第八章 拦截器实现权限验证、异常处理
《Spring MVC》 第八章 拦截器实现权限验证、异常处理
159 0
|
11月前
|
前端开发
java202304java学习笔记第六十四天-mvc的请求-ssm-删除用户操作1
java202304java学习笔记第六十四天-mvc的请求-ssm-删除用户操作1
45 0
|
12月前
|
前端开发
java202304java学习笔记第六十二天-mvc的请求-常用操作-查询操作2
java202304java学习笔记第六十二天-mvc的请求-常用操作-查询操作2
46 0
|
12月前
|
前端开发
java202304java学习笔记第六十二天-mvc的请求-常用操作-查询操作1
java202304java学习笔记第六十二天-mvc的请求-常用操作-查询操作1
35 0