声明:以下学习记录基于B站Up主"叫我Teacher周"的Blazor教学视频。 这位大佬的B站地址是:https://space.bilibili.com/626253649
2.Razor语法补漏
- 指令
@page "/razor"
@page "/razor1"
@attribute [System.ComponentModel.DataAnotations.Schema.Table("table")]
@implements IDisposable
@inherits ComponentBase
@inject IAsyncDisposable Disposable1
@layout Layout.MainLaout
@namespace BlazorApp.Client
@typeparm T where T:class
@typeparm K where K:class
- 运算(表达式,用 @() 括起来才能识别为表达式)
- 表达式示例: 用 @() 括起来,显示表明 括号里的部分要进行运算
<p> Last week is: @(DateTime . Now - TimeSpan.FromDays(7)) </p>
- 使用(MarkupString)来把html字符串做强制类型转换为html标签语句,比如要拼接如下html:
<p>
@((MarkupString)"<h2>我是标题二<h2/>")
</p>
如果不做强制转换,则"<h2>我是标题二<h2/>"
会被显示为普通字符串而失去h2的语义。
- 使用 Razor特有的 text虚拟标记 来在C#代码块中将该标记包裹的内容显示为html文本:
@for(int i=0;i<10;i++)
{
<text>显示为html文本@(i)</text>
//使用 <span>显示为html文本@(i)<span/> 也能达到最终显示效果,但是上面是不想或不能用<span>时的解决方案。
}
注意<text>
标记并不是html标记,而是Razor特有的虚拟标记。
同时注意以上的用法 @(i):html文本和变量要在一行显示时,必须使用@(i)来显示表示这是C#表达式
3.Razor组件
- 1.继承自ComponentBase或实现了IComponent接口,每个组件都是一个类。
- 2.其命名空间默认为项目+文件件层级,或用@namespace指定显示指定命名空间。
- 3.组件的全局命名空间保存地为 _Imports.razor 文件。此命名为约定式,此命名的文件可以存在于不同层级,但它只作用于它所在的层级以及子层级。
4.项目结构和路由组件
- @page "/Counter" 路由必须用/开头。一个页面可以有多个路由,但彼此不能相同。