.net5 core Razor项目实战系列之二:生成项目及框架简析

项目创建步骤如下:

第1步:创建新项目->ASP.NET Core Web 应用程序

第2步:配置新项目,项目名称 "AuthManagement"

第3步:创建新的ASP.NET Core Web 应用程序(这里的.net core版本选5.0)。

项目建好后在解决方案管理器中把目录展开是这样的:

和WEB API项目相比,可以看到

(1)多了wwwroot的文件夹(一般用于存放css、js、image等文件)和一些 .cshtml和.cshtml.cs文件。

(2)图中的Pages文件夹就是来放Razor页面文件的(在访问Razor页面的时候不需要将Pages作为路径的一部分)。

(3)Shared文件夹放一些通用的页面或布局页,一般以_开头来命名(名称以"_"开头的页面在浏览器中不可访问),

         此外,Shared文件夹下的文件被其他页面引用的时候是不需要加"Shared"这个路径的。

项目建好后,我们不改动任何文件,直接运行项目,可以得到如下页面:

可以看到,页面中的Home和Privacy这2个超链接对应解决方案中Pages文件夹下的Index.cshtml和Privacy.cshtml这两个Razor页面,

每个可访问的Razor页面都有一个对应的.cs文件用于编码在MVC框架中是用Controller来作为页面对应的代码文件的)

即页面和代码分离,这样的好处是页面/代码都很清晰,维护起来更容易。

打开Index.cshtml文件,其代码如下:

这里的代码很简单,似乎和页面呈现的内容不能完全对应,其代码只对应了红圈标识的部分:

这是因为该页面引用了Shared文件夹下的布局页"_Layout.cshtml",所有页面通用的部分在布局页中先定义好,

引用的页面只需要关注自身要展示的内容即可。

其中,

(1)@page 表示这个页面是可以被访问的,即在浏览器中输入指向该页面的路径时能被正常显示,没有@page指令的.cshtml页面不能被直接访问。

 

(2)@model IndexModel表示这个页面对应的Model是IndexModel,Model是页面和代码文件进行数据交换的载体,

一个.cshtml页面中只能有1条@model指令。

(3)@{
                   ViewData["Title"] = "Home page";
         }

的作用是给ViewData["Title"]赋值,即页面的Title ,我们在浏览页面的时候可以看到如下:

因为Index.cshtml使用了布局文件,打开Shared文件夹下的布局文件_Layout.cshtml,可以看到对应的页面代码:

如果我们不想显示" - AuthManagement"这一段,只要在布局文件中去掉就可以了。

================================================================

另外,Razor框架的Pages文件夹下还约定了_ViewImports.cshtml和_ViewStart.cshtml这两个文件,其中的代码分别如下:

_ViewImports.cshtml

@using AuthManagement
@namespace AuthManagement.Pages
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

_ViewStart.cshtml

@{
    Layout = "_Layout";
}

_ViewImports.cshtml用于给每个页面导入通用的指令信息,如果某个页面的指令不是通用的,在那个页面中单独导入就可以了。

_ViewStart.cshtml用来指定Razor页面要套用的布局文件,如果后续项目升级后换了一种风格,只需要改一下这个页面就可以了,

非常方便,默认情况下,在Pages文件夹下新增的每个Razor页面都会受到_ViewStart.cshtml的作用(即自动使用布局页),

如果不想使用布局页,只要在当前页面加入如下一行代码就可以了(见红色部分)

@page
@model IndexModel
@{
    Layout = null;
    ViewData["Title"] = "Home page";
}

再次浏览页面,效果如下:

当然,如果不使用布局页,我们还需要在页面中将<html><head><body>等一个标准html文件中的标签进行补齐。

 

posted @   屏风马  阅读(1089)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示