我有一些接受名称字符串的组件,并会根据传递给它们的名称显示不同的信息。其中一些组件没有问题,但其中一些组件会在用法上标记CS0841错误代码。
错误(活动的)CS0841在声明为\Pages\Awards\Tech \Pages\Awards\Tech\Profile之前不能使用局部变量“Name”。
这个可以
<!-- Block1 -->
<div class="flip-card @Classes" onclick="@callback">
<div>
<Images Name="@Name"/>
</div>
<div>
<h2><NameInfo Name="@Name" ReturnVal="Name"/></h2>
<h3>@year</h3>
</div>
</div>
@code {
[Parameter]
public string Name{get;set;}
[Parameter]
public string? Classes{ get; set; }
[Parameter]
public string[] list{ get; set; }
[Parameter]
public int year{ get; set; }
[Parameter]
public EventCallback<int> yearCallback{ get; set; }
public async Task callback()
{
await yearCallback.InvokeAsync(year);
}
}
但这一个没有
<!-- Block2 -->
<div class="prof-container">
<div class="year-close">
<h2>@Year</h2>
<h1><NameInfo Name="@Name" ReturnVal="Name" /></h1>
</div>
<div class="portrait">
<Images Name="@Name"/>
</div>
<button class="CloseProfile" onclick="@callback"> X </button>
</div>
@code {
[Parameter]
public string Name{ get; set; }
[Parameter]
public string? Year{ get; set; }
[Parameter]
public EventCallback<string> clear{ get; set; }
public async Task callback()
{
await clear.InvokeAsync("");
}
}
我已经搜索了错误代码信息,看了这里的其他几个问题,最接近的似乎是here。然而,这并不能解释为什么我会得到这个错误。它适用于所有调用我的参数的示例,在块2中,但不在块1中。
Block1编译没有问题,链接没有问题,运行良好。Block2抛出错误,阻止成功构建。
我错过了什么导致了这一切?
编辑:将EventCallback更正为EventCallback,并将(“”)添加到块2中的InvokeAsync
1条答案
按热度按时间6l7fqoea1#
我不确定问题的来源。但是,我确定了一个修复程序,允许它再次构建。
1.在HTML中,删除对参数的所有引用。
1.完全剪切代码块。保存并生成。仍然出现相同的错误。
1.粘贴或重新键入代码块
1.保存并关闭IDE
1.将引用添加回HTML。
代码看起来是一样的,但是现在构建时没有错误。