.NET6入门:2.使用模板创建.NET Core Web

                在目前B/S盛行的时代,本文将通过创建一个.NET Core Web模板的方式来带领大家进入.NET6开发的大门。

1. 创建.NET Core Web应用

        1.1 打开Visual Studio(不同版本VS可能创建新项目所在位置不同),单击创建新项目。

        1.2 选择C#语言和Web平台,在下面的项目中选中ASP.NET Core Web应用(模型-试图-控制器)后,单击下一步。

        PS:该处作者选择的为包含示例的Web应用。

         1.3 输入项目名称并选择项目要存放的位置后单击下一步。

         1.4 框架选择.NET 6.0。根据需要勾选配置HTTPS(H)和启用Docker(E)。单击创建。

        PS:该处作者并未勾选配置HTTPS和启用Docker。

 2. .NET Core Web应用结构

        创建好Web应用后将进入到项目界面。

         2.1 DemoWeb项目为刚刚从创建的Web应用。

        2.2 Properties——launchSettings.json        启动配置文件

{
  "iisSettings": { //IIS配置
    "windowsAuthentication": false, //IIS是否启用 Windows 身份验证
    "anonymousAuthentication": true, //IIS是否启用匿名身份验证
    "iisExpress": {
      "applicationUrl": "http://localhost:45024", //指定 IIS 服务器的地址
      "sslPort": 0 //指定IIS 服务器的https端口
    }
  },
  "profiles": { //运行的方式,可配置多个环境
    "DemoWeb": {
      "commandName": "Project",
      "dotnetRunMessages": true, //是否在运行时给予反馈信息
      "launchBrowser": true, //表示应用程序的时候是否自动启动浏览器
      "applicationUrl": "http://localhost:5204", //应用程序采用的URL列表,多个URL之间采用分号(“;”)进行分隔。
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development" //环境变量(用来表示当前的部署环境)
      }
    },
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

        2.3 wwwroot——用于存放web访问的静态资源文件

         2.4 Controller——MVC中的C。控制器。——>业务逻辑层。

                Models——MVC中的M。模型。——>数据访问层。

                Views——MVC中的V。视图。——>UI展示层。

       

        2.5 appsettings.json

                该文件下面会存在多个环境变量的配置。

                当launchSettings.json中ASPNETCORE_ENVIRONMENT值为Development时会使用

                appsettings.Development.json。其他配置同理,修改ASPNETCORE_ENVIRONMENT将读取不同环境的json。

        

        2.6 Program.cs

//WebApplication为整个Web应用程序
//CreateBuilder()方法创建一个WebApplicationBuilder 对象
var builder = WebApplication.CreateBuilder(args);

//添加服务。可通过builder.Services.AddXXX的方式添加想要添加的服务
// Add services to the container.
builder.Services.AddControllersWithViews();

//构造一个 WebApplication 实例
var app = builder.Build();

//app.Environment用来获取当前Web应用程序的环境变量
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
}

//启用静态文件中间件,加上这行代码后, 我们在浏览器中才能访问 wwwroot 目录下的文件,否则会报错
app.UseStaticFiles();

//启用路由中间件
app.UseRouting();

//启用权限验证中间件,当我们的网站是基于身份认证的话需要用到
app.UseAuthorization();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();


 

3..NET Core Web中的MVC简单介绍

        3.1 以下代码为Controllers目录下的HomeController.cs文件中的代码

using DemoWeb.Models;
using Microsoft.AspNetCore.Mvc;
using System.Diagnostics;

namespace DemoWeb.Controllers
{
    /// <summary>
    /// MVC中的控制器需继承Controller
    /// </summary>
    public class HomeController : Controller
    {
        /// <summary>
        /// ILogger微软自带的日志服务
        /// </summary>
        private readonly ILogger<HomeController> _logger;

        public HomeController(ILogger<HomeController> logger)
        {
            //实例化日志服务
            _logger = logger;
        }

        /// <summary>
        /// Index视图主方法——>Views/Home/Index.cshtml
        /// </summary>
        public IActionResult Index()
        {
            return View();
        }

        /// <summary>
        /// Privacy视图主方法——>Views/Home/Privacy.cshtml
        /// </summary>
        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 });
        }
    }
}

        3.1 在Program.cs中通过默认路由设置默认启动页面

//设置默认路由:pattern参数表示默认访问Home控制器下的Index Action所对应的页面
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

         按F5运行项目后效果如图:

        修改设置默认启动页面,代码如下:

//设置默认路由:pattern参数表示默认访问Home控制器下的Index Action所对应的页面
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Privacy}/{id?}");

        修改后运行效果如图:

         3.2 Model

                ErrorViewModel类中定义了RequestId、ShowRequestId两个字段。

namespace DemoWeb.Models
{
    public class ErrorViewModel
    {
        public string? RequestId { get; set; }

        public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
    }
}

                ErrorViewModel类在Controller中使用如下(注意要先引用Modedls的命名空间。例:using Models):

using DemoWeb.Models;


public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}

     ErrorViewModel类在Views中使用如下:

        1).@model ErrorViewModel——>表示指定ErrorViewModel模型。

        2).通过Model来访问该模型。例:@Model.RequestId

@model ErrorViewModel
@{
    ViewData["Title"] = "Error";
}

<h1 class="text-danger">Error.</h1>
<h2 class="text-danger">An error occurred while processing your request.</h2>

@if (Model.ShowRequestId)
{
    <p>
        <strong>Request ID:</strong> <code>@Model.RequestId</code>
    </p>
}

<h3>Development Mode</h3>
<p>
    Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred.
</p>
<p>
    <strong>The Development environment shouldn't be enabled for deployed applications.</strong>
    It can result in displaying sensitive information from exceptions to end users.
    For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
    and restarting the app.
</p>

                以上代码实现效果如图:

        3.3 Views

                Views中的结构如下:

                 每个Controller会对应Views下的一个文件夹(除Shared)。Controller中的每个视图Action则对应文件夹下的xxx.cshtml。

                

                Views/Shared

                _Layout.cshtml——>母版页

                在该页面中存在@RenderBody()占位符,表示要显示的内容。

                Views/_ViewImports.cshtml

                该页面为全局引用文件。需要在页面添加命名空间时,统一放到该页面处理。     

                Views/_ViewStart.cshtml

                该页面中指定母版页。代码如下(该代码表示指定Shared下的_Layout.cshtml页面为母版页):

                

@{
    Layout = "_Layout";
}

                该章节大致介绍了如何创建一个.NET6框架下的Web项目,以及使用模板创建的项目结构,后续将详细介绍.NET Core Web中的其他内容。

                                                                                      观众老爷们,山水有相逢,咱们下期再会。

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值