下面是详细讲解“.NET 6开发TodoList应用实现结构搭建”的完整攻略。
1. 概述
在本教程中,我们将使用.NET 6和C#构建一个简单的ToDoList应用程序。这个应用程序将包括一个基本的用户界面,允许用户创建、修改和删除待办任务。
我们将使用ASP.NET Core MVC框架来构建TodoList应用程序,并将其连接到一个SQLite数据库。我们将创建一个Api控制器以及一些视图和部分视图来显示应用程序的用户界面。
2. 步骤
2.1 创建项目
首先,我们需要创建一个新的ASP.NET Core Web应用程序项目。请按照以下步骤操作:
- 打开Visual Studio 2022,并选择“新建项目”。在左侧菜单中选择“ASP.NET Core Web应用程序”。
- 在右侧窗格中,选择“.NET 6”平台和“Web应用程序”项目类型。然后,您需要选择一个名称和位置,以及任何其他所需的选项。
- 单击“创建”按钮,等待项目创建完成。
2.2 添加依赖项
我们还需要为应用程序添加一些NuGet包,这些包将提供我们所需的框架和库。请按照以下步骤操作:
- 右键单击项目名称,并选择“管理NuGet包”。
- 在NuGet包管理器中,选择“浏览”选项卡,并搜索以下包:Microsoft.EntityFrameworkCore.Sqlite、Microsoft.EntityFrameworkCore.Tools、Microsoft.VisualStudio.Web.CodeGeneration.Design、Swashbuckle.AspNetCore。
- 选择每个包,并单击“安装”按钮以安装它们。
2.3 创建模型
接下来,我们需要创建一个模型,以便我们可以向数据库保存和检索待办事项。请按照以下步骤操作:
- 在根目录下创建一个名为“Models”的文件夹。
- 在Models文件夹中创建一个名为“TodoItem.cs”的新类文件。
- 在TodoItem类中,添加以下代码:
using System;
namespace TodoList.Models
{
public class TodoItem
{
public Guid Id { get; set; }
public string Name { get; set; }
public bool IsComplete { get; set; }
}
}
2.4 创建数据库上下文
接下来,我们需要创建一个数据库上下文,它将允许我们连接到SQLite数据库并将PendingItem模型保存到数据库中。请按照以下步骤操作:
- 在根目录下创建一个名为“Data”的文件夹。
- 在Data文件夹中创建一个名为“AppDbContext.cs”的新类文件。
- 在AppDbContext类中,添加以下代码:
using Microsoft.EntityFrameworkCore;
using TodoList.Models;
namespace TodoList.Data
{
public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions<AppDbContext> options)
: base(options)
{
}
public DbSet<TodoItem> TodoItems { get; set; }
}
}
2.5 创建Api控制器
接下来,我们需要创建一个Api控制器,该控制器将允许我们创建、检索、更新和删除待办事项。请按照以下步骤操作:
- 在根目录下创建一个名为“Controllers”的文件夹。
- 在Controllers文件夹中创建一个名为“TodoController.cs”的新类文件。
- 在TodoController类中,添加以下代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using TodoList.Data;
using TodoList.Models;
namespace TodoList.Controllers
{
[ApiController]
[Route("api/[controller]")]
public class TodoController : ControllerBase
{
private readonly AppDbContext _dbContext;
public TodoController(AppDbContext dbContext)
{
_dbContext = dbContext;
}
[HttpGet]
public async Task<IEnumerable<TodoItem>> Get()
{
return await _dbContext.TodoItems.ToListAsync();
}
[HttpGet("{id}")]
public async Task<TodoItem> Get(Guid id)
{
return await _dbContext.TodoItems.FirstOrDefaultAsync(x => x.Id == id);
}
[HttpPost]
public async Task<IActionResult> Post(TodoItem todoItem)
{
todoItem.Id = Guid.NewGuid();
await _dbContext.TodoItems.AddAsync(todoItem);
await _dbContext.SaveChangesAsync();
return Ok(todoItem);
}
[HttpPut("{id}")]
public async Task<IActionResult> Put(Guid id, TodoItem todoItem)
{
var existingItem = await _dbContext.TodoItems.FirstOrDefaultAsync(x => x.Id == id);
if (existingItem == null)
{
return NotFound();
}
existingItem.Name = todoItem.Name;
existingItem.IsComplete = todoItem.IsComplete;
_dbContext.TodoItems.Update(existingItem);
await _dbContext.SaveChangesAsync();
return Ok(existingItem);
}
[HttpDelete("{id}")]
public async Task<IActionResult> Delete(Guid id)
{
var existingItem = await _dbContext.TodoItems.FirstOrDefaultAsync(x => x.Id == id);
if (existingItem == null)
{
return NotFound();
}
_dbContext.TodoItems.Remove(existingItem);
await _dbContext.SaveChangesAsync();
return Ok();
}
}
}
2.6 创建视图
接下来,我们需要创建一些视图,允许用户查看、创建、编辑和删除待办事项。请按照以下步骤操作:
- 在根目录下创建一个名为“Views”的文件夹。
- 在Views文件夹中创建一个名为“Todo”的新文件夹。
- 在Todo文件夹中创建一个名为“Index.cshtml”的新视图文件,并添加以下代码:
@{
ViewData["Title"] = "Todo List";
}
<h1>@ViewData["Title"]</h1>
<table class="table">
<thead>
<tr>
<th>Name</th>
<th>Complete</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>@item.Name</td>
<td>@item.IsComplete.ToString()</td>
<td>
<a asp-action="Edit" asp-route-id="@item.Id">Edit</a> |
<a asp-action="Delete" asp-route-id="@item.Id">Delete</a>
</td>
</tr>
}
</tbody>
</table>
<a asp-action="Create">Create New</a>
- 在Todo文件夹中创建一个名为“Create.cshtml”的新视图文件,并添加以下代码:
@{
ViewData["Title"] = "Create Todo";
}
<h1>@ViewData["Title"]</h1>
<form asp-action="Create">
<div class="form-group">
<label asp-for="Name"></label>
<input asp-for="Name" class="form-control" />
</div>
<div class="form-group">
<label asp-for="IsComplete"></label>
<input asp-for="IsComplete" class="form-control" />
</div>
<button type="submit" class="btn btn-primary">Create</button>
</form>
<a asp-action="Index">Back to List</a>
- 在Todo文件夹中创建一个名为“Edit.cshtml”的新视图文件,并添加以下代码:
@model TodoList.Models.TodoItem
@{
ViewData["Title"] = "Edit Todo";
}
<h1>@ViewData["Title"]</h1>
<form asp-action="Edit">
<input asp-for="Id" type="hidden" />
<div class="form-group">
<label asp-for="Name"></label>
<input asp-for="Name" class="form-control" />
</div>
<div class="form-group">
<label asp-for="IsComplete"></label>
<input asp-for="IsComplete" class="form-control" />
</div>
<button type="submit" class="btn btn-primary">Save</button>
</form>
<a asp-action="Index">Back to List</a>
2.7 更新Startup.cs
最后,我们需要更新Startup.cs文件以允许我们连接到SQLite数据库和生成Api文档。请按照以下步骤操作:
- 打开Startup.cs文件,并在ConfigureServices方法中添加以下代码:
services.AddDbContext<AppDbContext>(options =>
options.UseSqlite(Configuration.GetConnectionString("DefaultConnection")));
services.AddControllers();
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "Todo List API", Version = "v1" });
});
- 在Configure方法中添加以下代码:
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "Todo List API V1");
c.RoutePrefix = string.Empty;
});
app.UseHttpsRedirection();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
2.8 运行应用程序
现在,我们已经完成应用程序的构建和配置。您可以使用以下命令在本地运行应用程序:
dotnet run
然后,打开浏览器,并导航到“https://localhost:5001”。您将看到一个基本的Todo List应用程序,允许您创建、编辑和删除待办事项。
3. 示例说明
示例1:创建待办事项
- 打开TodoList应用程序首页。
- 单击“Create New”按钮。
- 输入待办事项的名称和完成状态,然后单击“Create”按钮。
- 待办事项将被添加到列表中。
示例2:更新待办事项
- 打开TodoList应用程序首页。
- 单击待办事项的“编辑”按钮。
- 更新待办事项的名称或完成状态,然后单击“Save”按钮。
- 待办事项将被更新并添加到列表中。
以上就是“.NET 6开发TodoList应用实现结构搭建”的完整攻略,包含了创建项目、添加依赖项、创建模型、创建数据库上下文、创建API控制器、创建视图和更新Startup.cs等步骤。同时,提供了两个示例说明,让您更好地了解如何创建和使用TodoList应用程序。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:.NET 6开发TodoList应用实现结构搭建 - Python技术站