Fed*_*ete 5 c# razor blazor blazor-client-side
我有一些 Web 开发的背景,主要是 ASP MVC 和 JavaScript 与 Angular。
目前,我正在学习Blazor WASM,但我有点“困惑”,因为我找不到任何关于如何将以下代码拆分为两个文件的示例。
这是默认模板中一个组件的示例代码:
Counter.razor
@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++;
}
}
Run Code Online (Sandbox Code Playgroud)
有什么办法可以拆分成 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>
Run Code Online (Sandbox Code Playgroud)
Counter.razor.cs - C#
@code {
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
}
Run Code Online (Sandbox Code Playgroud)
我已经在 Angular 中开发了相对复杂的 SPA,在 ASP MVC 中开发了站点,当您的项目很小时,我会说这个解决方案没问题,但我不喜欢在同一个 HTML 页面中混合 JS/C# 代码。过去我遇到过这样一些复杂的情况,变得难以维持。
知道如何拆分吗?谢谢。
是的,您只需要在代码隐藏 .cs 文件中从 ComponentBase 继承,然后在 .razor 文件的顶部继承该类。
c#文件:
public class MyComponent : ComponentBase
Run Code Online (Sandbox Code Playgroud)
剃须刀文件:
@inherits MyComponent
Run Code Online (Sandbox Code Playgroud)
这篇文章有一个更彻底的解释,虽然它是 2018 年的,所以可能有一些过时的部分。https://gunnarpeipman.com/blazor-code-behind/
小智 5
您可以创建部分类来将代码与 HTML 分开:
[编辑:感谢 Enet 的信息] 如果将文件命名为 [classname].razor.cs,则该文件将成为解决方案资源管理器中的单个对象。今天午饭前我学到了两件事;是时候放慢脚步了。
如果您的 Blazor 项目中有一个名为 Index.razor 的页面(或组件)
编辑:部分类支持需要 .Net Core 3.1(根据 Federico Navarrete)。
在同一目录中创建一个同名的 C# 类。
一开始它不会编译,所以你必须添加“partial”这个词:
public partial class Index
{
...
}
Run Code Online (Sandbox Code Playgroud)
我更喜欢将所有代码放在分部类中,因为 .razor 页面没有像 .cs 文件那样的方法和属性下拉菜单。
| 归档时间: |
|
| 查看次数: |
2586 次 |
| 最近记录: |