Blazor入门笔记(2)-分部类组件与组件的继承
1.前言
2.分部类组件
Razor组件你可理解为就是一个类名与文件名相同的类,因此,可以新建一个同名的partial类,将组件中@code里面的代码放置到这个partial类里面,然后将原来组件中的@code部分删除。
将VButton组件改写为分部类的代码组织方式,其代码如下(新建一个组件为VButtonPartial,并将原来的代码VButton组件中的代码分别复制过去):
VButtonPartial.razor
<button type="button" class="@GetClassName()">@ChildContent</button>
VButtonPartial.razor.cs
using Microsoft.AspNetCore.Components; namespace BlazorComponent.MyComponents
{
public partial class VButtonPartial
{
[Parameter]
public RenderFragment ChildContent { get; set; } [Parameter]
public VBtnStyle BtnStyle { get; set; } = VBtnStyle.Default; [Parameter]
public VBtnSize BtnSize { get; set; } = VBtnSize.Default; private string GetClassName()
{
var builder = new System.Text.StringBuilder();
builder.Append("btn");
if (BtnStyle != VBtnStyle.Default)
{
builder.Append($" btn-{BtnStyle.ToString().ToLower()}");
}
if (BtnSize != VBtnSize.Default)
{
builder.Append($" btn-{BtnSize.ToString().ToLower()}");
}
return builder.ToString();
}
}
}
3.组件的继承
Razor组件都继承于Microsoft.AspNetCore.Components.ComponentBase类(可以项目的obj/Debug/netstandard2.1/Razor看到),因此,我们可以新建一个继承自ComponentBase类的父类,将组件中的公共部分提取到父类中,然后使组件继承这个父类。例如之前的VButton组件,我们可以构建一个新的VComponentBase,该类继承至ComponentBase类,然后将ChildContent属性提升到这个类中:
VComponentBase.cs
public class VComponentBase:ComponentBase
{
[Parameter]
public RenderFragment ChildContent { get; set; }
}
然后新建一个组件VButtonInherit,将VButton组件中除ChildContent组件参数外的所有代码都复制到VButtonInherit组件中,并在组件最上方使用@inherits指令,指示VButtonInherit继承于VComponentBase类。
VButtonInherit.razor
@inherits VComponentBase
<button type="button" class="@GetClassName()">@ChildContent</button> @code {
[Parameter]
public VBtnStyle BtnStyle { get; set; } = VBtnStyle.Default; [Parameter]
public VBtnSize BtnSize { get; set; } = VBtnSize.Default; string GetClassName()
{
var builder = new System.Text.StringBuilder();
builder.Append("btn");
if (BtnStyle != VBtnStyle.Default)
{
builder.Append($" btn-{BtnStyle.ToString().ToLower()}");
}
if (BtnSize != VBtnSize.Default)
{
builder.Append($" btn-{BtnSize.ToString().ToLower()}");
}
return builder.ToString();
}
}
当然,也可以将分部类组件与组件的继承结合使用。
本文参考:创建和使用 ASP.NET Core Razor 组件
Blazor入门笔记(2)-分部类组件与组件的继承的更多相关文章
- Blazor入门笔记(6)-组件间通信
1.环境 VS2019 16.5.1.NET Core SDK 3.1.200Blazor WebAssembly Templates 3.2.0-preview2.20160.5 2.简介 在使用B ...
- Blazor入门笔记(1)-从0构建一个组件
1.环境 VS2019 16.5.1 .NET Core SDK 3.1.200 Blazor WebAssembly Templates 3.2.0-preview2.20160.5 2.创建项目 ...
- Blazor入门笔记(5)-数据绑定
1.环境 VS2019 16.5.1 .NET Core SDK 3.1.200 Blazor WebAssembly Templates 3.2.0-preview2.20160.5 2.默认绑定 ...
- Blazor入门笔记(4)-组件的生命周期
1.环境 VS2019 16.5.1.NET Core SDK 3.1.200Blazor WebAssembly Templates 3.2.0-preview2.20160.5 2.简介 Blaz ...
- Blazor入门笔记(3)-C#与JS交互
1.环境 VS2019 16.5.1 .NET Core SDK 3.1.200 Blazor WebAssembly Templates 3.2.0-preview2.20160.5 2.前言 Bl ...
- 【Unity|C#】基础篇(5)——分部类与分部函数(partial)
[学习资料] <C#图解教程>(第6章):https://www.cnblogs.com/moonache/p/7687551.html 电子书下载:https://pan.baidu.c ...
- [C#学习笔记]分部类和分部方法
知识在于积累. 前言 好久没写博客了,因为在看<CLR via C#>的时候,竟然卡在了分部方法这一小节几天没下去.今天重新认真阅读,有些感悟,所以在此记录. 然后. 每天早晨第一句,&l ...
- Blazor入门:ASP.NET Core Razor 组件
目录 关于组件 组件类 静态资产 路由与路由参数 组件参数 请勿创建会写入其自己的组参数属性的组件 子内容 属性展开 任意参数 捕获对组件的引用 在外部调用组件方法以更新状态 使用 @ 键控制是否保留 ...
- MASA Blazor入门这一篇就够了
1.什么是Blazor? 有什么优势? ASP.NET Core Blazor 简介 Blazor 是一个使用 Blazor 生成交互式客户端 Web UI 的框架: 使用 C# 代替 JavaScr ...
随机推荐
- JZOJ 1492. 烤饼干
1492. 烤饼干 (Standard IO) Description NOIP烤饼干时两面都要烤,而且一次可以烤R(1<=R<=10)行C(1<=C<=10000)列个饼干, ...
- disruptor 链路实战 三
一.创建Event类 Trade import java.util.concurrent.atomic.AtomicInteger; public class Trade { private Stri ...
- c++ 中的单例类模板的实现方法
1.什么是单例模式 在架构设计时,某些类在整个系统生命周期中最多只能有一个对象存在 ( Single Instance ).如超市收银系统,其外观主要由显示器(1个).扫描枪(1个).收款箱(1个)组 ...
- Mozilla的 Firefox Graphics 团队向社区寻求重现WebRender bug的方法
导读 Mozilla 的 Firefox Graphics 团队正在向社区寻求帮助,由于他们收到了一些随机发生的 UI 错误报告,却一直无法找出错误的重现步骤(STR),因此现在向外寻求社区用户的帮助 ...
- MATLAB中的Regex
regexprep——用于对字符串进行查找并替换. regexp Definition: 用于对字符串进行查找,大小写敏感. startIndex = regexp(str,expression) 返 ...
- Netty源码分析之ChannelPipeline—出站事件的传播
上篇文章中我们梳理了ChannelPipeline中入站事件的传播,这篇文章中我们看下出站事件的传播,也就是ChannelOutboundHandler接口的实现. 1.出站事件的传播示例 我们对上篇 ...
- spring boot 学习笔记(一)
学习链接:http://www.cnblogs.com/ityouknow/category/914493.html 定义 spring boot 是由pivotal 团队提供的权限框架,设计目的是用 ...
- Visual Studio 安装中出现闪退
问题描述:win7 系统下, 安装 Visual Studio Community 2017 过程中,安装界面闪退 原因:Visual Studio 的版本低了 解决方案:选择 Visual Stud ...
- 解决idea的pom.xml文件不自动导包问题
在用pom添加新项目的包时,突然发现pom文件不能自动导包,找了半天发现用以下两个步骤就能解决: 一:打开setting 二:找到maven
- str的常用方法
注:s表示定义的一个字符串变量,如:s = 'hello string' 1. s.index() 查找元素,若查到则返回该元素索引,含多个该元素则返回第一个,查不到则报错 s = 'hello ...