3、vs2022_配置MVC,實現(M-V-C)


一、配置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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM