.NET6 Blazor @typeparam where 约束 ERROR RZ1017

4

我在 Razor 组件文件顶部有这个指令,但它会抛出一个 RZ1017 错误:

@typeparam TEntity where TEntity : IEntity

我错过了什么吗?

除了 .NET 6 Blazor 之外,还有其他的基础吗?


1
当您包含错误消息时会有所帮助。IEntity是否在范围内? - H H
你能分享一下你的代码示例吗? - Yiyi You
我确认在使用VS 17.6和.NET 6时,我也遇到了这个错误,但我无法解决。 - Andrеw
3
你是否有一个“code behind”类呢?使用这个,我发现我只需要在.razor.cs文件中使用@typeparam TEntity并定义约束条件。 - rabejens
@rabejens 这对我来说是有效的。但是让我感到不好的是,这似乎是我的代码中存在一些不一致的地方。也许这是Visual Studio或其标记组件中的一个错误,当它被修复后,我应该将所有类型约束返回到标记中。 - Alex34758
@rabejens 你的评论应该被接受为一个正确答案;非常感谢! - aurora
2个回答

1
我找到了一个不太麻烦的解决办法,直到这个错误被修复。
当我打开或重新启动Visual Studio时,会出现语法错误(代码仍然可以正常编译):

syntax error

编辑.csproj文件,随便怎么改都行;只要加一个空格 -> 保存,然后再删除它并再次保存。

enter image description here

回到剃刀文件,语法错误就不再存在了: 在此输入图像描述 重新启动Visual Studio会导致问题再次出现,所以重复上述步骤。

0

我正在使用带有.NET 6和服务器端 Blazor 的 ASP.NET MVC 项目。 我遇到了相同的问题。

解决方法是添加以下内容: <RazorLangVersion>latest</RazorLangVersion> 在项目的 csproj 文件中,在标签 <TargetFramework>net6.0</TargetFramework> 下。

编辑 1:上述代码实际上没有起作用。 正确的 RazorLangVersion 版本可以参考 Razor 语言版本

在 Razor 语言版本部分中,说明了该版本与 SDK 版本保持一致。 我再次测试时,在标签之间放入匹配的 SDK 版本,但问题仍然存在。

从这个问题可以得出结论,问题出现在 VS 本身。


1
当我使用这个RazorLangVersion标签并将其值设置为"latest"时,我会遇到多个错误:"Error CS1061 'RenderTreeBuilder'不包含名为'AddComponentParameter'的定义,并且找不到接受类型为'RenderTreeBuilder'的第一个参数的可访问扩展方法'AddComponentParameter'。" VS 2022 (17.6.2),.NET 6,7。 - Alex34758
1
由于这些错误,我无法编译和运行我的代码。如果没有这个标签,编辑器会显示“许多错误”混乱,但我至少可以进行编译和运行。所以看起来 Visual Studio 或其 Razor 标记组件存在问题,或者还需要其他一些改变,不仅仅是添加 RazorLangVersion 标签。 - Alex34758
1
是的,你是正确的。请检查我的更新答案。 - Andrеw
我不确定,但也许这个错误与此处描述的错误有关联。 - Alex34758

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接