初入碼田--ASP.NET MVC4 Web應用開發之二 實現簡單的增刪改查

来源:http://www.cnblogs.com/rcddup/archive/2016/07/29/5717533.html
-Advertisement-
Play Games

初入碼田--ASP.NET MVC4 Web應用之創建一個空白的MVC應用程式 初入碼田--ASP.NET MVC4 Web應用開發之一 實現簡單的登錄 2016-07-29 一、創建M002AdminDemo.cs 右鍵【Models】-->添加-->類 二、創建Vm002新增管理員視圖模型.cs ...


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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 說明:本文是個人翻譯文章,由於個人水平有限,有不對的地方請大家幫忙更正。 原文: "dotnet restore" 翻譯: "dotnet restore" 名稱 還原一個項目的依賴項和工具 概要 `dotnet restore [ source] [ packages] [ disable par ...
  • ...
  • 寫這點東西主要是看到知乎上有人在討論相關的問題,但是有不少人都在說一些不嚴謹,甚至是完全錯誤 但是流傳甚廣的東西,甚至是一些大神都在說,以下根據我的回答總結。 一個很常見又很低級的誤區是:認為引用類型保存在堆上,值類型保存在棧上……其實這個問題幼稚得我懶得說……但是實在又忍不住吐槽。 很多人都在說這 ...
  • 開篇 每一個版本的.net都會引入一些新的特性,這些特性方便開發人員能夠快速實現一些功能。雖然.net版本一直在更新,但是新版本對舊版本的程式都是相容的,在這一點上微軟做的還是非常好的。每次學一個新內容,第一次接觸的方法在腦海裡占的位置還是比較重要的,從剛開始接觸.net的多線程編程是使用Threa ...
  • Ajax製作智能提示搜索[js效果,後續博客園會更下麵顯示的部分,只是一個簡單的搜索結果,真正的大型網站用的是lucene全文搜索引擎。 歡迎關註博客園wangwangwangMax, 新浪:NewITdog, 微信公眾號:wangwangwangMax ...
  • 初入碼田--ASP.NET MVC4 Web應用開發之一 實現簡單的登錄 初入碼田--ASP.NET MVC4 Web應用開發之二 實現簡單的增刪改查 2016-07-29 在次之前,需要一臺電腦(~ ̄▽ ̄)~,以及Visual Studio 2013或者更高版本,SQL Sever資料庫(暫時不用 ...
  • 當我們在後臺得到一個字元串後比如字元串內容是:哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈 我們要在每兩個或者多個加入一個逗號或者一個分號時候,這個時候很多人都想的是迴圈,這個確實也不錯,但是在迴圈的基礎上呢,大家都知道C#中有一個字元 ...
  • 目錄: 1.判斷是否為空或者null 2.普通包含模糊查詢 1)以某字元串開頭的模糊查詢 2)以某字元串結尾的模糊查詢 3)包含某字元串的模糊查詢 3.精確到字元串對應位數字元的模糊查詢(*重點) linq大家肯定用過,對於其中的模糊查詢肯定也有所瞭解 提起linq的模糊查詢首先大家想到的肯定是 C ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...