你的位置:首页 > ASP.net教程

[ASP.net教程]初入码田


初入码田--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
本文由程程程原创,并发布到博客园,欢迎转载,但必须在文章页面明显位置写明作者和出处,非常感谢!