Razor Pages
学习Razor Pages笔记
学习内容:https://learnrazorpages.com
Razor页面都是以.cshtml结尾,其中内容页面必须具有以下三个特征:
1,文件名首位不能是下划线
2,文件扩展名为.cshtml
3,文件的第一行是 @page
内容页面可以指定一个布局文件,但不是必须的。页面可以包含代码块、HTML、Javascript 和 内联Razor代码。
Razor代码块被@{ }包裹,内部为标准C#代码。
PageModel,推荐使用页面模型,页面模型通过 @model 模型名称 引入页面中。
不同类型的Razor文件
上述内容页面是可浏览的,以下划线开头的文件为不可浏览的页面,以下划线开头的页面通常为局部页面,其中三个具有特殊功能。
_Layout.cshtml 所有内容页面的模板,网站页面相同的部分放在此文件中,一般包括header、footer、导航栏等。
_ViewStart.cshtml
_ViewImports.cshtml
局部视图
局部视图或页面不参与路由,因此可以使用任何不生成页面模型的模板创建局部视图。
局部视图可以以很多方式引入都主页面中,ASP.NET Core 2.1 版本以后推荐使用 局部标签助手:
<partial name = "_MenuPartical"/>
name属性是不带扩展名的局部视图文件名称,或其路径,此属性值区分大小写。
一般局部视图文件不用写路径,框架会以特定顺序自动搜索。
局部视图不能有@page指令,但可以使用@model XXX,模型可传递进入局部视图。
ViewImports 文件
_ViewImports.cshtml文件提供集中添加指令的机制,避免每个页面单独添加。支持如下指令:
@addTagHelper
@inherits
@namespace
@inject
@model
@removeTaghelper
@tagHelperPrefix
@using
其中@addTagHelper, @removeTagHelper 和 @tagHelperPrefix 指令与 Tag Helpers的管理相关。
@namespace 指定被ViewImport影响的页面的命名空间,每个文件只能有一个@namespace指令
@inject 指令与依赖注入相关
@model 指定模型
@using 添加其他命名空间
_viewImport.cshtml文件的数量没有限制,可以存在多个,其中@addTagHelper, @removeTagHelper,@inject, @using指令会累加,其他指令会覆盖。
ViewStart 文件
_ViewStart.cshtml文件在每个Razor页面执行前执行,它影响同级文件夹及下级文件夹中的所有Razor页面。