c# - 如何将 C# 和 HTML 的 Blazor WASM 组件代码拆分到不同的文件中?
问题描述
我有一些 Web 开发背景,主要是 ASP MVC 和带有 Angular 的 JavaScript。
目前,我正在学习Blazor WASM,但我有点“困惑”,因为我找不到任何关于如何将以下代码拆分为两个文件的示例。
这是默认模板中一个组件的示例代码:
反剃刀
@page "/counter"
<h1>Counter</h1>
<p>Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
}
有什么方法可以拆分成 Angular Web 组件吗?.html 和 .ts?在这种情况下 .razor 和 .razor.cs?
Counter.razor - HTML
@page "/counter"
<h1>Counter</h1>
<p>Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
Counter.razor.cs - C#
@code {
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
}
我在 Angular 中开发了相对复杂的 SPA,在 ASP MVC 中开发了站点,当您的项目很小时,我会说这个解决方案可以,但我不喜欢在同一个 HTML 页面中混合 JS/C# 代码。我过去曾遇到过一些像这样的复杂情况,并且很难维护。
知道如何拆分它吗?谢谢。
解决方案
是的,您只需要在代码隐藏 .cs 文件中从 ComponentBase 继承,然后在 .razor 文件的顶部继承该类。
c#文件:
public class MyComponent : ComponentBase
剃须刀文件:
@inherits MyComponent
这篇文章有更彻底的解释,虽然它是从 2018 年开始的,所以可能有一些过时的文章。https://gunnarpeipman.com/blazor-code-behind/
推荐阅读
- javascript - 如何选择具有特定类的元素?
- c# - 连接到远程服务器 ps.outlook.com 失败并显示以下错误消息:访问被拒绝
- c++ - C ++:确保在编译时仅在指定线程上调用函数
- mysql - 将数据加载到文件中然后更新列的事务
- iterator - 返回 Null 的 Java 迭代器
- aws-lambda - 在我的 Launch 请求之后,试图让 Alexa 听取我的回复
- python - 如何使用 IBM 的 Watson Speech to Text 服务将音频文件转换为文本
- azure - Powershell Connect-AzureAD 错误“accessing_ws_metadata_exchange_failed”
- python - FlaskForm 验证码:检查用户是否已经存在
- python - 在熊猫数据框中将字符串更改为日期时间