初入碼田--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
本文由程程程原創,並發布到博客園,歡迎轉載,但必須在文章頁面明顯位置寫明作者和出處,非常感謝!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM