我可以创建一个内联组件
<h1>@foo</h1>
@functions {
string foo = "foo";
}
Run Code Online (Sandbox Code Playgroud)
但是,当我创建Foo.razor
只包含:
<h1>@foo</h1>
Run Code Online (Sandbox Code Playgroud)
并Foo.razor.cs
包含:
namespace MyApp.Client.Components {
public class Foo: ComponentBase {
public string foo;
}
}
Run Code Online (Sandbox Code Playgroud)
我得到:
Error CS0101 The namespace 'MyApp.Client.Components' already contains a definition for 'Foo'
Run Code Online (Sandbox Code Playgroud)
我正在使用最新的VS 2019和Blazor库。
我究竟做错了什么?
Kne*_*lis 12
自 2019 年 10 月起,可以使用部分类。所以今天你可以像这样在代码隐藏文件中命名类:
public partial class Foo : ComponentBase
{
protected override Task OnInitializedAsync()
{
// do stuff
}
}
Run Code Online (Sandbox Code Playgroud)
如果您命名类文件Foo.razor.cs
,它将出现Foo.razor
在解决方案资源管理器中的razor 文件下。
当前,“代码隐藏”和.razor视图不能共享相同的名称。
因此,当您拥有时Foo.razor.cs
,Foo.razor
它将被视为同一文件,从而导致冲突。
目前的解决方法:将您的重命名Foo.razor.cs
为FooBase.cs
(或其他)。
然后在中Foo.razor
,添加@inherits FooBase
这里有一个与此相关的GitHub问题:https : //github.com/aspnet/AspNetCore/issues/5487
在使用实验性 Razor 的 Vs2019 v 16.8.4 中,一个新选项“将块提取到代码后面”
步骤是:
生成的类样本:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Lab2.Pages
{
public partial class Counter
{
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
}
}
Run Code Online (Sandbox Code Playgroud)
注意:生成的分部类不会继承 ComponentBase
,因此需要解决。
归档时间: |
|
查看次数: |
543 次 |
最近记录: |