Ber*_*cal 6 c# tuples blazor .net-6.0 visual-studio-2022
我有一个名为 TagComponent 的简单 Blazor 组件,它接收 4 个参数,我的问题是 OnTagSelected 参数,它接收从 TagComponent 调用的回调。
我的 .razor 页面中的代码片段:
// other code omitted for brevity
<p>Tags</p>
<div class="tags-container">
@foreach (var tag in _allTags)
{
<TagComponent Name="@tag.Name" Id="@tag.Id"
AddToProductList="true" OnTagSelected="TagSelected" />
}
</div>
// other code omitted for brevity
Run Code Online (Sandbox Code Playgroud)
TagComponent.razor 如下所示:
<span class="tag-body" @onclick="SelectTag" >
@Name
</span>
@code {
[Parameter, EditorRequired]
public string Name { get; set; } = default!;
[Parameter, EditorRequired]
public int Id { get; set; }
[Parameter]
public bool AddToProductList { get; set; } = false;
[Parameter, EditorRequired]
public EventCallback<(int id, bool addToProduct)> OnTagSelected { get; set; }
private async Task SelectTag()
{
await OnTagSelected.InvokeAsync((Id, AddToProductList));
}
}
Run Code Online (Sandbox Code Playgroud)
我需要使用 @onclick 事件将 TagComponent 中的 2 个值返回到页面,因此我在 EventCallback TValue 上使用了一个元组。
回到页面,TagSelected 方法如下所示:
@code {
List<Tag> _allTags = new List<Tag>();
List<Tag> _productTags = new List<Tag>();
// other code omitted for brevity
private void TagSelected((int id, bool addToProduct) selectedTag)
{
if (selectedTag.addToProduct)
{
var transferTag = _allTags.First(t => t.Id == selectedTag.id);
_productTags.Add(new Tag(transferTag.Id, transferTag.Name));
_allTags.Remove(transferTag);
}
else
{
var transferTag = _productTags.First(t => t.Id == selectedTag.id);
_allTags.Add(new Tag(transferTag.Id, transferTag.Name));
_productTags.Remove(transferTag);
}
}
// other code omitted for brevity
}
Run Code Online (Sandbox Code Playgroud)
基本上,这里发生的情况是,当我单击 TagComponent 时,它将根据元组参数中的 bool 值在 _allTags 和 _productTags 列表之间切换。
代码编译并运行得很好,我的问题是错误列表选项卡中的错误/警告:
另外,在编辑器上,有一条红色的波浪线,好像有错误,但实际上并没有,因为代码可以编译并正常工作。
我的问题是,为什么会发生这种情况,有没有办法让错误/警告消失?代码正在运行,但 IDE 显示错误,就好像它无法识别与 Blazor 代码混合的元组语法。
我使用的是 Windows 10,使用 Visual Studio Community 2022 Preview 17.4.0 Preview 2.0 和 .NET 6。
编辑:这似乎是 Visual Studio 特定的问题,在 VScode 上错误消失了(使用 .NET 6.0.401)。
| 归档时间: |
|
| 查看次数: |
441 次 |
| 最近记录: |