📜  ASP.NET Core-项目布局(1)

📅  最后修改于: 2023-12-03 15:29:30.120000             🧑  作者: Mango

ASP.NET Core 项目布局

在ASP.NET Core中,项目的目录结构是按功能分离的,以便更好地组织代码和资源文件。

以下是一个标准的ASP.NET Core项目的目录结构:

MyProject/
|-- Controllers/
|-- Models/
|-- Views/
|-- wwwroot/
|-- appsettings.json
|-- Program.cs
|-- Startup.cs
|-- MyProject.csproj

下面我们逐个解释每个目录和文件的作用:

Controllers

这里包含了应用程序的控制器类,使用MVC模式时定义的,负责接受请求并返回响应。一般每个控制器至少有两个方法:Index方法用于请求默认页面,和其他方法用于处理其他不同的请求。

using Microsoft.AspNetCore.Mvc;

namespace MyProject.Controllers
{
    public class HomeController : Controller
    {
        public IActionResult Index()
        {
            return View();
        }

        public IActionResult Contact()
        {
            return View();
        }
    }
}
Models

这里包含了应用程序的模型类,用于表示和操作数据模型。其中包含了各种Poco类,ViewModel类和任何其他的处理模型层次结构的类。

namespace MyProject.Models
{
    public class Person
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
    }
}
Views

这个文件夹包含了应用程序的视图(HTML文件),用于显示数据、提供用户界面和交互。通常包含了Razor视图引擎用于生成动态HTML标记。每个控制器都有一个与之对应的视图集合。

<!-- MyProject/Views/Home/Index.cshtml-->
<h1>Welcome to MyProject</h1>
wwwroot

这个文件夹包含了应用程序的静态资源(如CSS、JS和图片)。这些资源不会被编译到程序集中,而是需要被复制到服务器的wwwroot目录中。

MyProject/
|-- wwwroot/
|   |-- css/
|   |   |-- site.css
|   |-- js/
|   |   |-- script.js
|   |-- images/
|   |   |-- logo.png
appsettings.json

这个文件包含应用程序的配置信息,如数据库连接字符串、密钥、日志级别等等。通过Configuration对象可以访问这个文件中的配置项。

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=MyProjectDb;Trusted_Connection=True;MultipleActiveResultSets=true"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "AllowedHosts": "*"
}
Program.cs

这个文件包含了应用程序的启动方法,其中包含了创建WebHostBuilder的代码。

using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;

namespace MyProject
{
    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 Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

namespace MyProject
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllersWithViews();
        }

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseBrowserLink();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }

            app.UseStaticFiles();

            app.UseRouting();

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

这个文件包含了项目的元数据信息,如项目名称、版本号、依赖项等等。其中包含了Nuget包的引用和应用程序及其组件的编译方式等信息。

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="3.1.8" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="3.1.8" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\MyProject.Services\MyProject.Services.csproj" />
  </ItemGroup>

</Project>

以上就是ASP.NET Core的标准项目布局,按照这个结构来组织代码和资源文件,有助于更好地管理和维护应用程序。