Razor组件是否支持类似Tag Helpers的HtmlTargetElement指定目标元素?
如何为Razor组件指定自定义标签名(类似Tag Helpers的HtmlTargetElement)
当然可以实现!在Blazor里,你不需要像Tag Helpers那样依赖HtmlTargetElement特性来指定目标标签,只需要通过修改组件的文件名就能轻松搞定自定义标签名的需求。
具体操作步骤如下:
- 修改组件文件名:把你的组件文件从
Navigation.razor重命名为navigation.razor(注意是全小写,Blazor组件的标签名直接对应其文件名,这样就能匹配你想要的<navigation>标签) - 保留原有组件代码:你的组件内部逻辑完全不需要改动,原代码可以继续使用:
@inherits NavigationBase <ul class="@Class"> @foreach (INavigation nav in RazorManager.Navigations[Group]) { <li> <a href="@nav.Route">@nav.Text</a> </li> } </ul>
- 使用自定义标签:完成文件名修改后,你就可以像期望的那样使用小写的
<navigation>标签了:
<navigation group="Main" class="nav navbar-nav" />
补充说明
Blazor组件的标签映射逻辑和Tag Helpers不同:Tag Helpers依赖HtmlTargetElement特性来绑定标签,而Blazor是直接通过组件文件名来识别标签名的。如果你的组件是分离后台代码的(比如继承的NavigationBase类),后台类的名称不需要修改,只需要调整razor文件的名字即可。
另外,Blazor对组件标签的大小写其实有一定兼容性,但如果你想严格使用全小写的<navigation>标签,直接把文件名改成全小写是最直接可靠的方式。
内容的提问来源于stack exchange,提问作者maraaaaaaaa
相关产品推荐
相关产品推荐

