主要解釋 Scaffold 產生的檔案,建議大家要詳細看過,
由於我的實作有修改一些內容,所以看起來看官網的文件有一些差異。
Razor 是將伺服器程式碼內嵌到網頁中的標記語法。 Razor語法包含 Razor 標記、c # 和 HTML。 通常包含 Razor 的檔案副檔名為 cshtml 。 Razor也可在 (razor) 的 Razor 元件檔案中找到。
頁面以下幾個功能與說明連結
@page 指示詞
@model 指示詞
版面配置頁
ViewData 和 Layout
ASP.NET Core 表單中的標籤協助程式
防止跨網站偽造要求 (XSRF/CSRF) 攻擊 ASP.NET Core
驗證標籤協助程式
標籤標記協助
輸入標記協助程式
ASP.NET Core 中的標籤協助程式
修改首頁 Pages/index.cshtml
<div class="text-center">
<h1 class="display-4">Welcome Pellok 12屆 鐵人賽</h1>
<a href="https://ithelp.ithome.com.tw/users/20072651/ironman/3347"><h1>Azure 的自我修煉</h1></a>
</div>
增加 Article 連結
修改 Pages/Shared/_Layout.cshtml,加入 Article 連結
<div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">
<ul class="navbar-nav flex-grow-1">
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark"asp-page="/Articles/Index">Article</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a>
</li>
</ul>
</div>
在 Models 資料夾 新增 SeedData.cs 檔案
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using PellokITHome.Data;
using System;
using System.Linq;
namespace PellokITHome.Models
{
public class SeedData
{
public static void Initialize(IServiceProvider serviceProvider)
{
using (var context = new PellokITHomeContext(
serviceProvider.GetRequiredService<
DbContextOptions<PellokITHomeContext>>()))
{
// Look for any movies.
if (context.Article.Any())
{
return; // DB has been seeded
}
context.Article.AddRange(
new Article
{
Title = "Day01 Azure 的自我修煉",
ReleaseDate = DateTime.Parse("2020-09-01"),
Link = "https://ithelp.ithome.com.tw/articles/10233277",
Count = 0
},
new Article
{
Title = "Day02 申請Azure帳號",
ReleaseDate = DateTime.Parse("2020-09-02"),
Link = "https://ithelp.ithome.com.tw/articles/10233285",
Count = 0
},
new Article
{
Title = "Day03 Resource Group 資源群組",
ReleaseDate = DateTime.Parse("2020-09-03"),
Link = "https://ithelp.ithome.com.tw/articles/10233371",
Count = 0
},
new Article
{
Title = "Day04 Dotnet Core 專案",
ReleaseDate = DateTime.Parse("2020-09-04"),
Link = "https://ithelp.ithome.com.tw/articles/10233562",
Count = 0
}
);
context.SaveChanges();
}
}
}
}
修改 Program.cs 檔案,增加或修改以下內容
using Microsoft.Extensions.DependencyInjection;
using PellokITHome.Models;
public static void Main(string[] args)
{
var host = CreateHostBuilder(args).Build();
using (var scope = host.Services.CreateScope())
{
var services = scope.ServiceProvider;
try
{
SeedData.Initialize(services);
}
catch (Exception ex)
{
var logger = services.GetRequiredService<ILogger<Program>>();
logger.LogError(ex, "An error occurred seeding the DB.");
}
}
host.Run();
}
如果遇到 'IServiceProvider' does not contain a definition for 'CreateScope' 代表using Microsoft.Extensions.DependencyInjection; 沒有加入
重建DB,執行程式,如果Article 的表格內沒有資料,就會創建預設資料
查看狀態
git status
加入索引,提交版本
git add .
git commit -m "1. HomePage Article Link 2. DB SeedData"
上傳到雲端
git push
上一篇 Day10 實作官網 ASP.NET Core 教學(二)
下一篇 Day12 實作官網 ASP.NET Core 教學(四)