C# Blazor 学习笔记(2):组件模板化/插槽

chatgpt/2023/9/27 17:29:54

文章目录

  • 前言
  • 组件模板
    • 为什么要组件模板
      • 不使用组件模板
      • 使用后
    • 代码部分
  • 和直接绑定数据有和区别?

前言

组件模板化我们在WPF经常遇到,这里将一下Blazor是如何解决的。

组件模板

为什么要组件模板

虽然组件化了之后,我们写代码的速度已经很快了。但是组件模板会让我们写的更快。

这里有个需要。需要一个学生页面和老师页面。

不使用组件模板

学生

<组件1/>
<组件2/>
<组件3/>
<组件4/>
....
<学生信息/>

老师

<组件1/>
<组件2/>
<组件3/>
<组件4/>
....
<老师信息/>

使用后

声明组件

<组件1/>
<组件2/>
<组件3/>
<组件4/>
....
<组件模板a/>

使用组件

<组件模板><组件模板a><学生信息/></组件模板a>
</组件模板><组件模板><组件模板a><老师信息/></组件模板a>
</组件模板>

代码部分

Tips:我这里使用了元祖来作为临时变量。这个是C#的语法

<h3>Model</h3><table><thead>@HeadTemplate</thead><tbody>@foreach(var item in Items){<tr>@RowTemplate(item)</tr>}</tbody>
</table>@code {//内容模板[Parameter]public RenderFragment HeadTemplate { get; set; }//数据模板,使用元祖来作为数据源[Parameter]public RenderFragment<(string Name,string Age)> RowTemplate { get; set; }//数据源[Parameter]public IReadOnlyList<(string Name,string Age)> Items { get; set; }}

使用


<Model Items="Lists"><HeadTemplate><th>Name</th><th>Age</th></HeadTemplate><RowTemplate><!--@context是拿到数据模板的上下文,由于我们使用的是元祖,所以可以直接使用--><td>@context.Name</td><td>@context.Age</td></RowTemplate>
</Model>@code{public List<(string Name,string Age)> Lists{ get; set; }protected override Task OnInitializedAsync(){Lists = new List<(string Name, string Age)>{("小王","11"),("小刘","12"),("小陈","13")};return base.OnInitializedAsync();}}

和直接绑定数据有和区别?

对于组件更高的控制权,绑定数据源,如何展示是受模板组件限制的。使用了模板可以自定义展示效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-5314707.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

助力质检维护,基于超轻量级分割模型ege-unet开发构建水泥基建裂缝分割识别系统

在前面的博文&#xff1a; 《参数量仅有50KB的超轻量级unet变种网络egeunet【参数和计算量降低494和160倍】医疗图像分割实践》 初步学习和实践了最新的超轻量级的unet变种网络在医疗图像领域内的表现&#xff0c;在上文中我们就说过会后续考虑将该网络模型应用于实际的生产业…

<MyBatis>MyBatis把空字符串转换成0的问题处理方案

先看问题: Postman入参: MyBatis采用map循环插入: // Mapper接口层void addPar(Param(value "question") Map<String, Object> paramMap);<!-- 新增&#xff1a;参数 --><insert id"addPar" parameterType"map">INSERT IGNO…

MySQL执行一条select语句,执行过程怎么样

执行一条select语句&#xff0c;执行过程怎么样 连接器 与客户端进行 TCP 三次握手建立连接&#xff1b;MySQL基于TCP协议进行传输的校验客户端的用户名和密码&#xff0c;如果用户名或密码不对&#xff0c;则会报错如果用户名和密码都对了&#xff0c;会读取该用户的权限&…

【Python目标识别】Labelimg标记深度学习(YOLO)样本

人工智能、ai、深度学习已经火了很长一段时间了&#xff0c;但是还有很多小伙伴没有接触到这个行业&#xff0c;但大家应该多多少少听过&#xff0c;网上有些兼职就是拿电脑拉拉框、数据标注啥的&#xff0c;其实这就是在标记样本&#xff0c;供计算机去学习。所以今天跟大家分…

医疗流程自动化盛行,RPA成为医疗保健行业的重点应用技术

随着我们进入新的科技纪元&#xff0c;机器人流程自动化&#xff08;RPA&#xff09;正快速地改变着我们的游戏规则。简单来说&#xff0c;RPA 就是模仿人类与电子系统的互动&#xff0c;自动化执行重复性的任务和操作序列。 医疗保健领域中&#xff0c;RPA 的应用具备巨大的潜…

IPv6 over IPv4隧道配置举例

配置IPv6 over IPv4手动隧道示例 组网需求 如图1所示&#xff0c;两台IPv6主机分别通过SwitchA和SwitchC与IPv4骨干网络连接&#xff0c;客户希望两台IPv6主机能通过IPv4骨干网互通。 图1 配置IPv6 over IPv4手动隧道组网图 配置思路 配置IPv6 over IPv4手动隧道的思路如下&…

【【51单片机的红外遥控】】

红外遥控&#xff0c;完全把控 红外遥控 利用红外光进行通信的设备&#xff0c;由红外LED将调制后的信号发出&#xff0c;再由专门的红外接收头进行解调输出 通信方式&#xff1a;单工 异步 红外LED波长&#xff1a;940nm 通信协议标准&#xff1a;NEC标准 用那种一体化红红外…

python-网络爬虫.Request

Request python中requests库使用方法详解&#xff1a; 一简介&#xff1a; Requests 是Python语言编写&#xff0c;基于urllib&#xff0c; 采用Apache2 Licensed开源协议的 HTTP 库。 与urllib相比&#xff0c;Requests更加方便&#xff0c;处理URL资源特别流畅。 可以节约我…
推荐文章