zoukankan      html  css  js  c++  java
  • 初入码田ASP.NET MVC4 Web应用开发之二 实现简单的增删改查

    初入码田--ASP.NET MVC4 Web应用之创建一个空白的MVC应用程序

    初入码田--ASP.NET MVC4 Web应用开发之一 实现简单的登录

    2016-07-29

     一、创建M002AdminDemo.cs

    右键【Models】-->添加-->类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    namespace Ddup.Models
    {
        /// <summary>
        /// 管理员模型演示
        /// </summary>
        public class M002AdminDemo
        {
            /// <summary>
            /// 定义的一个查询所有管理员的方法
            /// </summary>
            /// <returns></returns>
            public static IEnumerable<T001Admin> GetAll()
            {
                DdupEntities db = new DdupEntities();
                return db.T001Admin;
            }
            /// <summary>
            /// 定义的一个根据id查找对应管理员的方法
            /// </summary>
            /// <param name="id"></param>
            /// <returns></returns>
            public static T001Admin GetById(int id)
            {
                DdupEntities db = new DdupEntities();
                return db.T001Admin.FirstOrDefault(m => m.Id == id);
            }         
        }
    }

    二、创建Vm002新增管理员视图模型.cs

    右键【ViewModel】-->添加-->类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    //调用数据注释所需程序集
    using System.ComponentModel.DataAnnotations;
    
    namespace Ddup.Models.ViewModel
    {
        public class Vm002新增管理员视图模型
        {
            //required表示必填项,ErrorMessage返回错误信息
            [Required(ErrorMessage = "{0},不能为空")]
            //stringlength定义输入字符的范围(max,min,error)
            [StringLength(20, MinimumLength = 10, ErrorMessage = "请输入{2}至{1}个字符")]
            //定义属性在页面显示时的名称
            [Display(Name = "账号")]
            public string Account { get; set; }
    
            [Required(ErrorMessage = "{0},不能为空")]
            [StringLength(20, MinimumLength = 10, ErrorMessage = "请输入{2}至{1}个字符")]
            [Display(Name = "密码")]
            public string Password { get; set; }
    
            [Required(ErrorMessage = "{0},不能为空")]
            [StringLength(4, MinimumLength = 2, ErrorMessage = "请输入{2}至{1}个字符")]
            [Display(Name = "姓名")]
            public string Name { get; set; }
    
            /// <summary>
            /// 定义的  Vm002新增管理员视图模型  该类的一个空构造函数
            /// </summary>
            public Vm002新增管理员视图模型()
            {
                Account = "";
                Password = "";
                //为了后面(Create)演示,此处设置Name初始化值为Ddup
                Name = "Ddup";
            }
    
            /// <summary>
            /// 定义了将新增数据通过EF,插入到数据库中的方法
            /// </summary>
            public void Save()
            {
                using (DdupEntities db = new DdupEntities())
                {
                    var t001 = new T001Admin()
                    {
                        Account=this.Account,
                        Password=this.Password,
                        Name=this.Name
                    };
                    db.T001Admin.Add(t001);
                    db.SaveChanges();
                }
            }
        }
    }

    三、创建C02AdminController.cs控制器

    右键【Controllers】-->添加控制器-->空的MVC5控制器

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    
    using Ddup.Models;
    using Ddup.Models.ViewModel;
    
    namespace Ddup.Controllers
    {
        public class C02AdminController : Controller
        {
            /// <summary>
            /// 使用GetAll()方法,返回所有管理员信息
            /// </summary>
            /// <returns></returns>
            public ActionResult Index()
            {
                return View(M002AdminDemo.GetAll());
            }
    
            /// <summary>
            /// 使用GetById()方法,通过传递的id来获取对应管理员的详细信息
            /// </summary>
            /// <param name="id"></param>
            /// <returns></returns>
            public ActionResult Details(int id)
            {
                var model = M002AdminDemo.GetById(id);
                if (model == null) return View("Error");
                return View(model);
            }
    
            /// <summary>
            /// 定义get的新增action,调用 Vm002新增管理员视图模型 的空构造函数,初始化
            /// </summary>
            /// <returns></returns>
            public ActionResult Create()
            {
                //通过此action,后面再新增页面Name的初始值会和 Vm002新增管理员视图模型 的空构造函数中
                //所定义的初始化值一样。
                return View(new Vm002新增管理员视图模型());
            }
    
            /// <summary>
            /// 定义的post的新增action,在View中表单提交方式为POST时,将通过此action执行操作
            /// </summary>
            /// <param name="model"></param>
            /// <returns></returns>
            [HttpPost]
            public ActionResult Create(Vm002新增管理员视图模型 model)
            {
                //try,catch异常捕获
                try
                {
                    //判断模型状态是否有效,此处根据在 Vm002新增管理员视图模型 中对各个属性的数据注释来判断,对应输入的值是否有效
                    if (ModelState.IsValid)
                    {
                        //调用 Vm002新增管理员视图模型 中所定义的保存方法Save()
                        model.Save();
                        //return View("Index");
                        //return Redirect("~/C02Admin/Index");
                        return RedirectToAction("Index");
                    }
                }
                catch (Exception ex)
                {
                    //将捕获的异常信息添加到""中,或者注明关键字(如:"Name"),将来在View中对应输出错误信息
                    ModelState.AddModelError("", ex.Message);
                }
                return View(model);
            }
    
            public ActionResult Edit(int id)
            {
                var model = M002AdminDemo.GetById(id);
                if (model == null) return View("Error");
    
                //前台与后台之间的传值方法之一ViewData
                //将通过id找到的模型数据,传递与视图数据关联的模型
                ViewData.Model = model;
                return View(model);
            }
    
            [HttpPost]
            public ActionResult Edit(int id, FormCollection collection)
            {
                try
                {
                    if (ModelState.IsValid)
                    {
                        DdupEntities db = new DdupEntities();
                        var model = db.T001Admin.FirstOrDefault(m => m.Id == id);
    
                        #region 1.0 更新model的关键字字段值(所有)
    
                        string[] strArr = collection.AllKeys;
                        TryUpdateModel(model, strArr); 
    
                        #endregion
    
                        #region 2.0 更新model的关键字字段值(选择要更新关键字字段)
    
                        //TryUpdateModel(model, new string[] {"Account","Password","Name" });
                        #endregion
    
                        db.SaveChanges();
                        return RedirectToAction("Index");
                    }
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError("", ex.Message);
                }
                return View();
            }
    
            public ActionResult Delete(int id)
            {
                try
                {
                    DdupEntities db = new DdupEntities(); ;
                    var t001 = db.T001Admin.FirstOrDefault(m => m.Id == id);
                    if (t001 != null)
                    {
                        db.T001Admin.Remove(t001);
                        db.SaveChanges();
                        return RedirectToAction("Index");
                    }
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError("", ex.Message);
                }
                return View();
            }
        }
    }

    四、创建对应的视图

    添加返回所有管理员的Index视图

     添加返回对应id的管理员Details视图

    添加新增视图

    添加编辑视图

     

    五、测试下我们所创建的增删改查功能吧

    本人属于初学者,如果有何不足,还请见谅,也希望大家多多给意见,谢谢!!!

    =================================================================================================

    作者:程程程
    出处:http://rcddup.cnblogs.com
    本文由程程程原创,并发布到博客园,欢迎转载,但必须在文章页面明显位置写明作者和出处,非常感谢!

  • 相关阅读:
    1.border-image
    CSS3 3D transform
    js表单的focus()与blur()方法
    jquery背景backgroundPosition插件
    数字反转
    js的字符串charAt()方法
    FormData使用方法详解
    封装自己的jquery插件
    webpack打包vue项目之后怎么启动&注意事项
    JavaScript中的async/await
  • 原文地址:https://www.cnblogs.com/rcddup/p/5717533.html
Copyright © 2011-2022 走看看