如何解决在不同页面上具有相同变量的 Blazor 页面会导致路线不明确重建时
编辑:出于某种原因,每当我重建应用程序时,我对 BO.razor 的所有更改都消失了。我通过从 BOType.razor 中另存为创建了 BO.razor,但我尝试关闭 BO.razor 并重新打开它并保留我的更改。变化是第一次出现。重建和 BO.razor 将 BOType.razor 的内容复制到其中。
这显然解释了为什么路线会发生冲突,但引发了更多更令人不安的问题。
WTF。
我正在尝试构建我的第一个 Blazor 应用程序。目前的基本思想是,您可以拥有不同的业务对象,并根据业务对象类型动态生成页面。
到目前为止,我正在尝试构建两个页面
/{BOType}/ - 列出该类型的所有有效 BO
/{BOType}/{BOID:int}/ - 显示此 BO 及其相关数据。
当我第一次运行该应用程序时,它的运行完全符合我的想象。 /Form/ 显示所有保存的表单,/Form/1 显示包含 Form 1 数据的页面。
当我重建应用程序或在使用 watch 运行应用程序时保存某些内容时,出现以下异常:
InvalidOperationException: The following routes are ambiguous:
'{BOTName}' in 'BlazorApp.Pages.BOType'
'{BOTName}' in 'BlazorApp.Pages.BO'
Microsoft.AspNetCore.Components.LegacyRouteMatching.LegacyRouteTableFactory.RouteComparison(LegacyRouteEntry x,LegacyRouteEntry y)
InvalidOperationException: Failed to compare two elements in the array.
System.Collections.Generic.ArraySortHelper<T>.sort(Span<T> keys,Comparison<T> comparer)
如果我更改变量的名称(一个名为 BOTName,一个名为 BOType)或更改顺序(/BOType/ 和 /view/BOType/BOID,或 /BOType/ 和 /BOType),也会发生同样的事情/view/BOID)。
令人愤怒 的部分是,每当我尝试这些更改中的一个时,它似乎都有效,因为出于某种原因,它第一次解释这些路径时就明白了我的意思。然后我更改其他内容并保存或只是重建,但我得到了不明确的路线异常。
有没有人对我如何以某种方式让我的原始工作路线坚持下去有任何想法,或者对编译器以这种方式解释它的一些提示?我是 Web 应用程序开发的新手,所以我仍在学习,Blazor 的实现看起来很简单,但显然不可靠:(
谢谢
解决方法
问题是 Blazor 依赖于编译器扩展,IDE 不知道(实际上它知道,但不完美)。机械处理 razor
文件(复制或移动)或重建项目可能会破坏 Blazor 的缓存。
有时缓存不是持久的,因此重新启动 Visual Studio(或您使用的任何 IDE)可能就足够了。在其他情况下,您必须按如下方式重置中间文件:
- 退出 IDE。
- 打开项目目录并删除输出目录(
bin
和obj
)。 - 重新打开并重建项目。
如果它没有帮助,并避免将来出现同样的问题:
- 永远不要像处理普通文件那样处理
razor
文件,所以不要复制也不要移动, - 如果您想复制
razor
页面/组件,请创建一个新页面/组件并复制代码。移动就像复制,但旧文件被删除。- 注意为复制的类型指定不同的名称。
- 重命名很痛苦。正常重命名后进行重置(如前所述)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。