ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

第一章 项目结构

2021-05-26 19:33:47  阅读:225  来源: 互联网

标签:Layout 项目 第一章 cshtml using 页面 public 模板 结构


目录

结构图

项目结构说明

目录/文件 说明
依赖项 ASP.NET Core开发、构建和运行过程中的依赖项,一般都是NuGet包和一些SDK
Properties 配置,存放一些json文件,用于配置ASP.NET Core项目
Properties/launchSettings.json 启动配置文件,主要包括环境变量,开发端口
wwwroot 网站根目录,主要存放类似于CSS、JS、图片以及HTML文件等静态资源文件
Program.cs 这个文件包含了应用的入口方法Main方法,负责配置和启动应用程序
Startup.cs Startup.cs是项目的入口启动文件,主要用来注册服务和配置请求管道

launchSettings.json

这是一个项目启动文件,可以通过它来实现开发、测试、正式环境的自由切换,我们可以直接修改json文件,也可以通过VS提供的界面(右键当前项目->属性->调试)进行新增修改。环境变量ASPNETCORE_ENVIRONMENT可以用来控制使用哪个配置文件。

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:18623/",
      "sslPort": 0
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "IIS Express Test": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Test"
      }
    },
    "NetCoreDemo.Web": {
      "commandName": "Project",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "http://localhost:18624/"
    }
  }
}

wwwroot

wwwroot是网站的默认根目录, 它包含了所有的"前端"的静态文件, css、image、JS以及一个名为lib的文件夹.lib中默认内容是bootstrap和jquery.
在Startup中, 会调用一个无参数的UseStaticFiles()方法, 将此目录标记到网站根目录.

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseStaticFiles();
}

_Layout.cshtml

布局模板, 简单的说就是所有采用此模板的页面拥有大体一致的布局, 举个例子, 我们的页面经常是这样的结构:

Header、Footer和Navigation基本上是不变的, 打开_Layout.cshtml, 我们可以看到一个@RenderBody()标识, 它其实就是来定义Content部分的。
还有类似@RenderSection("Scripts", required: false)这样的标识, 引用此模板的页面可以将该页的特定JS的引用放在对应的Section中.

_ValidationScriptsPartial.cshtml

<environment include="Development">
    <script src="~/lib/jquery-validation/dist/jquery.validate.js"></script>
    <script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>
</environment>

打开此页面, 可以看到一些这样的引用, validation 顾名思义是用来做验证的。
我们通过如下代码引用_ValidationScriptsPartial.cshtml, 也就是采用jquery-validation来做验证

@section Scripts {
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
注意: 默认的_Layout模板是未引用的, 因为不是所有页面都需要有输入操作.

Model中设置验证方式

public class User
{
    [Key]
    public string Id { get; set; } = Guid.NewGuid().ToString();
    [Display(Name = "姓名")]
    [Required(ErrorMessage = "姓名不能为空!")]
    public string Name { get; set; }
    [Display(Name = "账号")]
    [Required(ErrorMessage = "账号不能为空!")]
    public string Account { get; set; }
    [Display(Name = "密码")]
    [Required(ErrorMessage = "密码不能为空!")]
    public string Password { get; set; }
}

在页面添加验证

<div class="form-group">
    <label asp-for="Name" class="col-md-2 control-label"></label>
    <div class="col-md-10">
        <input asp-for="Name" class="form-control" />
        <span asp-validation-for="Name" class="text-danger"></span>
    </div>
</div>

_ViewImports.cshtml

有点像Framework版本的MVC项目中的View目录下的那个Web.config

在View中引用Model等的时候, 为了避免重复写using,可以在这个文件中添加引用

@using NetCoreDemo.Web
@using NetCoreDemo.Web.Models
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

_ViewStart.cshtml

这个打开就一句话,当然还可以在这写一些其他需要"通用"执行的内容.

@{
    Layout = "_Layout";
}

这个页面中的内容会在所有View执行前执行, 现在这句话就是给所有的View一个默认的Layout模板.

所以在View中这样写

@{
    Layout = null;
}

和这样写

@{

}

是不一样的, 第一种是告诉这个View不采用任何模板.

第二种写法是什么都不干, 所以它会采用_ViewStart.cshtml中指定的模板.

Program.cs

这是应用的起点, 启动后通过UseStartup()指定下文的Startup启动文件进行启动.其中CreateWebHostBuilder方法构建了Kestrel服务器,负责监听,转发请求与响应客户端。.net core程序本质上是一个控制台应用程序,就算发布到IIS上,也只是用IIS做反向代理

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
}

Startup.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;

namespace HelloWorld
{
    public class Startup
    {
        // 该方法在运行时被调用。
        // 可以使用该方法将服务添加到容器中
        public void ConfigureServices(IServiceCollection services)
        {
        }

        // 该方法在运行时被调用
        // 可以使用该方法来配置 HTTP 请求管道
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.Run(async (context) =>
            {
                await context.Response.WriteAsync("Hello World!");
            });
        }
    }
}

ConfigureServices 方法

ConfigureServices 方法用于定义应用程序所需要的服务,例如 ASP.NET Core MVC 、Entity Framework Core 和 Identity 等等

public void ConfigureServices(IServiceCollection services){}

Configure 方法

Configure定义请求管道中的中间件

public void Configure(IApplicationBuilder app, IHostingEnvironment env){
    
}

参考

https://baijiahao.baidu.com/s?id=1620334909551970021&wfr=spider&for=pc

标签:Layout,项目,第一章,cshtml,using,页面,public,模板,结构
来源: https://www.cnblogs.com/mygoal/p/14814753.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有