close

主題:MVC 的 Model

情境:

成功建立View + Controller 後,這一章來說明Model用法,簡單來說Model。

 

重點:

1.理解Model 腳色定位。

2.建立第一個Model。

 

步驟:

 

step1.在Models資料夾 -> 右鍵 加入 類別 -> 輸入名稱 (我這邊是輸入Student) -> 新增Student.cs檔案 (檔名不一定要Model結尾)

 

 

 

step2. 設定欄位

Model 的設計概念是一個欄位,而這欄位的用意是接收 表單欄位、資料表欄位 資料。

下面寫的public string name ....等等 就是所謂的欄位

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.ComponentModel.DataAnnotations;

namespace CoreMvcExp.Models
{
    public class Student
    {
        [Display(Name = "學號")]
        [DisplayFormat(DataFormatString ="{0:0000}", ApplyFormatInEditMode =false)]
        public int Id { get; set; }

        [Display(Name = "姓名")]
        public string Name { get; set; }

        [Display(Name = "國文")]
        public int Chinese { get; set; }

        [Display(Name = "英文")]
        public int English { get; set; }

        [Display(Name = "數學")]
        public int Math { get; set; }

        [Display(Name = "總分")]
        public int Total { get; set; }

    }
}

 

step3.在HomeController 補上程式(藍色部分是新的)。

 

public class HomeController:Controller
    {
        protected List<Student> students = new List<Student>
        {
            new Student { Id =1, Name="Joe", Chinese=100, English=100, Math=100 },
            new Student { Id =12, Name="Jack1", Chinese=92, English=82, Math=60 },
            new Student { Id =23, Name="Cathy", Chinese=98, English=91, Math=94 },
            new Student { Id =34, Name="Jack2", Chinese=60, English=85, Math=55 },
            new Student { Id =45, Name="David", Chinese=59, English=70, Math=82 }
        };

        public IActionResult Index() 
        {
            return View();
        }
        public  async Task<IActionResult> Scores()
        {
            return await Task.Run(() => View(students));
        }

    }

 

step4. 並新增一個View -> 叫做Scores.cshtml -> 補上程式碼。

@model IEnumerable<CoreMvcExp.Models.Student>

@{
    ViewData["Title"] = "Scores";
}

<h1>Scores</h1>

<p>
    <a asp-action="Create">Create New</a>
</p>
<table class="table">
    <thead>
        <tr>
            <th>
                @Html.DisplayNameFor(model => model.Id)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Name)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Chinese)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.English)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Math)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Total)
            </th>
            <th></th>
        </tr>
    </thead>
    <tbody>
        @foreach (var item in Model)
        {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.Id)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Name)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Chinese)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.English)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Math)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Total)
                </td>
                <td>
                    @Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
                    @Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
                    @Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
                </td>
            </tr>
        }
    </tbody>
</table>

step5. 執行起來~ 網址輸入 Home/Scores,如果能看到以下結果,就代表你成功囉。

image

 

 

恭喜你完成簡單的 MVC 範例囉。

下一章,會說明甚麼是HtmlHelper and TagHelper。

 

 

 

 

 

 

arrow
arrow
    文章標籤
    asp.net MVC
    全站熱搜
    創作者介紹
    創作者 阿駿 的頭像
    阿駿

    阿駿的部落格

    阿駿 發表在 痞客邦 留言(0) 人氣()