第一章 项目结构
作者:互联网
- 结构图
- 项目结构说明
- launchSettings.json
- wwwroot
- _Layout.cshtml
- _ValidationScriptsPartial.cshtml
- _ViewImports.cshtml
- _ViewStart.cshtml
- Program.cs
- Startup.cs
- 参考
结构图
项目结构说明
目录/文件 | 说明 |
---|---|
依赖项 | 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
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