[Day5] C# MVC Model模型使用 - C#&AspNetCore

在上回 [Day4] C# MVC的程式架構淺談 - C#&AspNetCore ,我們談了整體的架構與檔案。
在這篇主要談如何在 ASP.NET Core MVC 中建立Model模型,並且使用。

Model定義

模型,是一個Class,在MVC裡是放資料的容器,通常會因為以下原因建立:

  1. 為了對應資料庫的table schema(欄位名稱)
  2. 呈現頁面資料的ViewModel

建立Model的過程

1.在Models資料夾 Add > New Item

2.選擇Class,然後自訂Model名稱

3.自己增加欄位ID、Name、Age、Address。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace WebApplication1.Models
{
public class UsersModel
{
public int ID { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
}

4.完成,建立一個Model就是這麼簡單,再來就是使用這個Model。

使用Model

再來我們透過HomeController使用他。

HomeController.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using WebApplication1.Models;

namespace WebApplication1.Controllers
{
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;

public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
}

public IActionResult Index()
{
// 建立usersModel物件
UsersModel usersModel = new UsersModel()
{
ID = 1,
Name = "YU HSIANG",
Age = 25
};
// 傳入View
return View(usersModel);
}

public IActionResult Privacy()
{
return View();
}

[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
}
}

23~31,透過模型Model建立規格,再把資料指派進去,傳進View中。

接下來要在View中使用我們傳進的Model

Index.cshtml
1
2
3
4
5
6
7
8
9
10
11
12
13
@model WebApplication1.Models.UsersModel
@{
ViewData["Title"] = "Home Page";
}
<ul>
<li>@Model.ID</li>
<li>@Model.Name</li>
<li>@Model.Age</li>
</ul>
<div class="text-center">
<h1 class="display-4">Welcome</h1>
<p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>

如此一來就能顯示我們的資料了。

此外,通常會建立ViewModel以對應特定的View畫面。

[補充]View型態主要分為兩種
Type View(強型別)-compiler時就必須過,有intellisense
Dynamic View(動態)-intellisense不會協助,在View具有不同class的model可以使用

總結

知道Model有ViewModel與table schema的用法,能夠使我們更清楚訂定需要的資料規格,讓維護或擴充時有一個良好的先天條件。@@
而在下篇中將會探討Model的資料驗證。

參考資料
https://ithelp.ithome.com.tw/articles/10240268