一、配置M-V-C文件結構
1、新建文件夾
在Web_DEMO下面新建Controllers、Models、Repository、Views、wwwroot 共5個文件夾;
在Views文件夾下,創建Shared文件夾;
在wwwroot文件夾下,創建css、img、js、lib共4個文件夾
文件結構:https://files.cnblogs.com/files/shiliumu/Web_DEMO.rar?t=1666436518
2、新建控制器
Controllers文件夾下,右鍵添加控制器,選擇空控制器,命名:HomeController.cs
HomeController.cs代碼如下:
using Microsoft.AspNetCore.Mvc; namespace Web_DEMO.Controllers { public class HomeController : Controller { public IActionResult Index() { return View(); } } }
3、添加視圖,
右鍵Index方法,選擇添加視圖,Razor空視圖
View文件夾下自動生成Home文件夾,Home文件夾下自動生成Index.cshtml文件,
在Index.cshtml文件中,添加<h1>標簽
@* For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860 *@ @{ } <h1>我是mvc視圖</h1>
4、添加模型,
右鍵Models文件夾,選擇添加類,新建Login類,添加DataAnnotations引用
using System.ComponentModel.DataAnnotations; namespace Web_DEMO.Models { public class Login { [Key] public string loginId { get; set; } public string loginPwd { get; set; } } }
二、配置.netCore項目的啟動入口文件Program.cs
1、注入服務
builder.Services.AddControllersWithViews(); //注入服務,控制器及視圖
ps:選擇注入MVC選項
builder.Services.AddMvcCore(); //只運行Controller/RazorPages必要的核心服務
builder.Services.AddControllers(); //包含AddMvcCore()所做的動作外,再加身份驗證服務
builder.Services.AddRazorPages(); //要用Controller但不用View,例如WebAPI,可以選這個
builder.Services.AddControllersWithViews(); //包含AddControllers()的所有項目,再加上:cshtml Razor View和Cache Tag Helper
builder.Services.AddMvc(); //等於AddControllersWithViews() 加 AddRazorPages(),不想漏掉功能,發揮ASP.NET Core 最大威力
2、添加靜態文件,注意添加位置,在路由app.UseRouting();上面
app.UseStaticFiles(); //使用默認文件夾wwwroot
3、修改路由
//app.MapGet("/", () => "Hello World!"); //注釋掉原來路由,使用下面控制器路由 app.UseRouting(); app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}");
4、配置好的Program.cs文件如下:
var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllersWithViews(); //注入服務,控制器及視圖 var app = builder.Build(); app.UseStaticFiles(); //使用默認文件夾wwwroot //app.MapGet("/", () => "Hello World!"); //注釋掉原來路由,使用下面控制器路由 app.UseRouting(); app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); app.Run();
5、F5運行,顯示“我是mvc視圖”
三、配置View
1、添加Razor視圖開始和視圖導入
View文件夾右鍵,添加Razor視圖,類型選擇“Razor視圖-空”
依次添加“Razor視圖開始”和“Razor視圖導入”,文件名系統默認:_ViewStart.cshtml、_ViewImports.cshtml
_ViewStart.cshtml在View開始執行之前執行,而且是每一個View,一般在里面設置“母版頁”值,當作_layout.cshtml文件的布局屬性來使用
內容只有一行:
@{
Layout = "_Layout";
}
_ViewImports.cshtml是放一些要引用的命名空間,預設的ASP.NET Core MVC專案就有一個/Views/_ViewImports.cshtml,
其內容為:
@using Web_DEMO;
@using Web_DEMO.Models; @*//如果Models文件夾下不存在模型,會提示錯誤*@)
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
之后的每一個View 就不用再引用這些命名空間,與_ViewStart.cshtml 一樣,可以為不同的Controller、不同的Area 增加_ViewImports.cshtml
2、添加Razor視圖布局頁,即"母版頁"
View->Shared文件夾右鍵,添加Razor視圖,
類型選擇“Razor視圖-空”,添加”Razor布局“,文件名系統默認:_Layout.cshtml
在_Layout.cshtml文件中,@RenderBody()代碼下,
添加:@await RenderSectionAsync("Scripts", required: false)
<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>@ViewBag.Title</title> </head> <body> <div> @RenderBody() @await RenderSectionAsync("Scripts", required: false) @*添加*@ </div> </body> </html>