声明:以下学习记录基于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
  • 运算(表达式,用 @() 括起来才能识别为表达式)
  1. 表达式示例: 用 @() 括起来,显示表明 括号里的部分要进行运算
<p> Last week is: @(DateTime . Now - TimeSpan.FromDays(7)) </p>
  1. 使用(MarkupString)来把html字符串做强制类型转换为html标签语句,比如要拼接如下html:
<p>
    @((MarkupString)"<h2>我是标题二<h2/>")
</p>

如果不做强制转换,则"<h2>我是标题二<h2/>"会被显示为普通字符串而失去h2的语义。

  1. 使用 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" 路由必须用/开头。一个页面可以有多个路由,但彼此不能相同。
posted on 2024-03-14 11:20  hrx521  阅读(103)  评论(0编辑  收藏  举报