VSCode创建连接mysql的ASP.NET Core项目(续)

  前一篇文章《VSCode创建连接mysql的ASP.NET Core项目》介绍了如何在VSCode中创建ASP.NET Core Web项目、连接mysql数据库,但项目最后只是将数据库中的数据读出来,然后以列表形式展示在页面上。本文继续该项目,参照微软ASP.NET Core教程中提供的示例代码(参考文献2),继续增加新建、编辑、删除、查看明细功能。
  先分享一个VSCode的技巧,原来一直不知道在终端运行了dotnet run之后怎么停止,之前一直都是新建一个终端,这两天才发现,可以按ctrl+c来停止。
  首先根据教程及个人理解介绍项目结构,如下图所示。
在这里插入图片描述
  从上往下大概介绍一下每个文件夹及重要文件的意义:

  • .vscode:用于保存和设置与VSCode运行及调试相关的参数,详细的介绍请查看参考文献3-4;
  • bin:保存项目编译后的文件;
  • Models:该文件夹是手动添加的文件夹,用于保存与数据库表对应的数据类,同时为了简单起见,把数据库连接类(RazorPagesMovieContext)也放在了该文件夹内,微软提供的示例中是将其放在了单独的Data文件夹中;
  • Pages:保存项目中的所有页面,其中Shared文件夹中保存的是共用的页面,其中的_Layout.cshtml 相当于所有页面通用的页面;
  • wwwroot:包括项目中使用的css文件、JavaScript文件及依赖项等;
    在这里插入图片描述
  • appsettings.json:保存项目相关参数配置,有点类似与.net framework中winform项目的app.settings文件;
  • program.cs:项目的入口点,main函数即在该文件中;
  • startup.cs:感觉有点像项目的初始化配置类,可以配置项目的数据库类、日志、路由等各方面的内容;
  • TestWebMySql.csproj:项目文件,可以配置项目的依赖项、运行时版本等。

  项目中的页面称为Razor 页面,其包含两个文件:cshtml 文件和.cshtml.cs 文件,前者用于设置页面中的显示内容及格式,后者包含处理页面事件的C#代码。感觉Razor页面有点类似于Winform界面,包含有designer文件和对应的代码文件。
  .cshtml.cs中的类继承自PageModel,主要处理页面中的onget、onpost等事件,这跟之前学习的JSP不太一样,JSP页面中内嵌Java代码,可以直接在页面中嵌入大量代码,也可以JSP结合Servlet,减少JSP文件中的代码,将操作放在Servilet中。
  cshtml 文件中内置Razor语法,它与Pages/Shared中的_Layout.cshtml 结合起来才算是一个完整的页面。cshtml文件中的内容主要放在_Layout.cshtml 中的 RenderBody区域。

    <div class="container">
        <main role="main" class="pb-3">
            @RenderBody()
        </main>
    </div>

  接下来介绍在项目中增加新建、编辑、删除、查看明细功能,其实是参考微软的示例项目,将其中对应的功能页面复制到项目中,然后做适应性的调整。
  首先是新建功能,项目的主页面是Pages/Index.cshtml,目前其中主要包含一个表格,在该表格下增加指向新建电影条目的链接,然后将微软示例项目中的Create相关页面复制到Pages/Movies文件夹下。

<p>
    <a asp-page="./Movies/Create">创建新的电影条目</a>
</p>

  新建页面主要是用户输入信息,然后提交到数据库,相应的Create.cshtml.cs中主要处理页面的onpost事件,将页面提交的各个字段自动映射并创建Movie对象,然后保存到数据库,如下面代码所示。页面中各字段与Movie类属性的对应关系、验证方式是通过页面中的asp-for、asp-validation-for等进行配置的(还在学习中,对这些标签的含义不是太明白,有疑问请查看参考文献1)。数据保存成功后,调用RedirectToPage函数跳转到项目主页面。
在这里插入图片描述

	 if (!ModelState.IsValid)
      {
          return Page();
      }

      _context.Movies.Add(Movie);
      await _context.SaveChangesAsync();

      return RedirectToPage("../Index");

  在项目主页面列表中增加一列,用于显示编辑、查看明细、删除等页面链接(这三个页面也是从微软的示例项目中复制过来的),其中asp-page用于设置要跳转的页面,asp-route-id指定传入到该页面的参数(形式为asp-route-{value},具体介绍请查看参考文献7-8),这两个结合起来能够产生最终的页面跳转地址。

	<td>
	    <a asp-page="./Movies/Edit" asp-route-id="@item.Id">Edit</a> |
	    <a asp-page="./Movies/Details" asp-route-id="@item.Id">Details</a> |
	    <a asp-page="./Movies/Delete" asp-route-id="@item.Id">Delete</a>
	</td>

在这里插入图片描述在这里插入图片描述  同时编辑、查看明细、删除的页面都是以@page "{id:int}"开头,用于接收传过来的参数。
  编辑页面主要是显示已有数据及保存修改后的数据,因此其cshtml.cs文件中主要响应onget、onpost函数,onget函数根据页面传入的id获取数据库中对应的对象,然后根据页面配置显示各字段内容,用户修改完成点击提交按钮,onpost函数将修改后的数据保存到数据库,最后跳转回项目主页面。页面大致如下:
在这里插入图片描述  查看明细页面主要是显示已有数据,因此其cshtml.cs文件中主要响应onget函数,onget函数根据页面传入的id获取数据库中对应的对象,然后根据页面配置显示各字段内容,页面大致如下:
在这里插入图片描述  删除页面主要是显示待删除数据及删除数据,因此其cshtml.cs文件中主要响应onget、onpost函数,onget函数根据页面传入的id获取数据库中对应的对象,然后根据页面配置显示各字段内容,用户点击提交按钮,onpost函数删除数据库中指定Id的数据,最后跳转回项目主页面。页面大致如下:
在这里插入图片描述
  本文介绍了基于微软教程及示例程序开展的ASP.NET Core Web项目学习情况,由于初学,有些内容理解不够或者理解有误,后续还会继续深入学习。

参考文献:
[1]https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/razor-pages/razor-pages-start?view=aspnetcore-5.0&tabs=visual-studio
[2]https://github.com/dotnet/AspNetCore.Docs/tree/main/aspnetcore/tutorials/razor-pages/razor-pages-start/sample/RazorPagesMovie50
[3]https://blog.csdn.net/wangbeibei23/article/details/106307886
[4]https://blog.csdn.net/V__KING__/article/details/109407846?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-4&spm=1001.2101.3001.4242
[5]https://www.cnblogs.com/liulun/p/7904602.html
[6]https://blog.csdn.net/weixin_30817749/article/details/96678853
[7]http://blog.baibaota.com/337.html
[8]https://docs.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/built-in/anchor-tag-helper?view=aspnetcore-5.0#asp-route-value

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值