ASP.Net MVC 使用 (Model篇)

ASP.Net MVC 建立Model 基礎教學

首先在專案選擇"Models" 點選滑鼠右鍵

步驟1:

選擇"加入" >>選擇"新增項目"

(1)選擇"資料" >> (2)選擇"ADO.NET" >> (3)輸入MODEL 名稱 >> (4)新增

步驟2: 

EF Designer包括Database First及Model First

Database First也就是資料庫已存在,mapping資料庫產生Entities

Model First是空的資料庫,經由撰寫程式物件去產生對應資料庫及table

(1)選擇"來自資料庫的 EF Designer" >>(2)下一步

 

步驟3:

選擇"新增連接"

(1)輸入"伺服器名稱"  (連結到資料庫伺服器的IP) >> (2)選擇登入資料庫伺服器的方式 >>

(3)選取(輸入)資料庫

(4)點選"確定"  補充說明:在點選"確定"前 先進行"測試連接" 已確定正確連接到資料庫伺服器

上一步"確定後"(1)會自動產生 >>(2)根據程式開發需求選擇需要的安全性,因為本篇文章為教學方便選擇"是,在連接字串包含敏感資料"

>>(3)勾選"在Web Config 中的連接設定儲存:" 輸入名稱 >>(4)下一步

(1)勾選需要的資料庫物件

"將產生的物件名稱複數化或單數化",設定為"勾選"時 後面多出"s"(例如:tblPrioritys)(請見說明1)

(2)模行命名空間,採用預設

 

點選上圖(3)完成 資料模型已建立完成 如下圖

將模型更新/新增資料MODEL

步驟1:

在專案下的MODEL資料夾開啟檔案".edmx"  ,在任何處點選滑鼠右鍵

(1)選擇從資料庫更新模型

(1)勾選需要加入的資料表 >> (2)完成 可在".edmx" 看到已加入的

完成後 可在".edmx" 看到已加入的 (如圖)  將檔案存檔 

在View 新增Creat頁面

(1)在範本選擇 "Creat" >> (2) 選擇模型類別 >> (3) 選擇資料內容類別(類似使用哪一個連接資料庫字串) (4)加入

加入後 我們便可看到ASP.NET MVC 已經把頁面依據模型建立出相關物件

在模型客製頁面欄位名稱及設定驗證條件

在Model 資料夾下展開".edmx" >> 展開 ".tt" >> 選擇在頁面上使用的對應Model

需要引用 using System.ComponentModel.DataAnnotations;

Display :定義欄位名稱

Required:表示不能空值的時候 ErrorMessage :提示訊息

StringLength:限制輸入字串長度  StringLength(長度, ErrorMessage = "提示訊息")

RegularExpression:使用正規表達式進行驗證 例如:RegularExpression(@"^[0-9]*$", ErrorMessage = "只能輸入數字")

DataType:

提供多種的資料型態,如:日期、時間、電話、貨幣、郵件地址...等。  

例如:日期驗證 DataType(DataType.Date, ErrorMessage = "請輸入正確的日期") 

DisplayFormat:定義資料格式

//------------------------------------------------------------------------------
// <auto-generated>
//     這個程式碼是由範本產生。
//
//     對這個檔案進行手動變更可能導致您的應用程式產生未預期的行為。
//     如果重新產生程式碼,將會覆寫對這個檔案的手動變更。
// </auto-generated>
//------------------------------------------------------------------------------

namespace EFModel_v1.Models
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;

    public partial class tblPriority
    {
        public int PkID { get; set; }
        [Required(ErrorMessage = "請輸入製令單號")]
        [StringLength(20, ErrorMessage = "請勿超過20個字")]
        [Display(Name = "製令單號")]
        public string OrderNumber { get; set; }

        [Display(Name = "料號")]
        [Required(ErrorMessage = "請輸入料號")]
        [StringLength(15, ErrorMessage = "請勿超過15個字")]
        public string PartNo { get; set; }

        [Display(Name = "採購單號")]
        [Required(ErrorMessage = "請輸入採購單號")]
        [StringLength(20, ErrorMessage = "請勿超過20個字")]
        public string PurchaseOrderNo { get; set; }
        [Display(Name = "供應商名稱")]
        [Required(ErrorMessage = "請輸入供應商名稱")]
        [StringLength(20, ErrorMessage = "請勿超過20個字")]
        public string SupplierName { get; set; }

        [Display(Name = "數量")]
        [Required(ErrorMessage = "請輸入數量")]
        [RegularExpression(@"^[0-9]*$", ErrorMessage = "只能輸入數字")]
        public Nullable<int> Quantity { get; set; }

        [Display(Name = "資料建置日期")]
        [Required(ErrorMessage = "請輸入建置日期")]
        [DataType(DataType.Date, ErrorMessage = "請輸入正確的日期")]
        [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
        public System.DateTime CreateDate { get; set; }
    }
}

執行結果

說明1:

參考資料:

[研究] ASP.NET MVC 5入門(四)增加模型(Model)

將產生的物件名稱複數化或單數化 (Pluralize or singularize generated object names) 的功能為何?

[ASP.NET MVC] 新增資料驗證

[Entity Framework]EF Desinger與Code First(上)