ASP.NET Core 3.1 Razor 页面路由不明确匹配异常

Posted

技术标签:

【中文标题】ASP.NET Core 3.1 Razor 页面路由不明确匹配异常【英文标题】:ASP.NET Core 3.1 Razor Page Route Ambiguous Match Exception 【发布时间】:2020-08-05 12:15:53 【问题描述】:

在剃须刀页面中,我为用户提供了最多比较 3 种产品的选项。 它适用于 2,但是当我打开 3 产品的链接时,它给了我“AmbiguousMatchException”

我在 Startup.cs 中的路线如下:

options.Conventions.AddPageRoute("/Compare", "compare/ProductCode1(vs)ProductCode2(vs)ProductCode3");
options.Conventions.AddPageRoute("/Compare", "compare/ProductCode1(vs)ProductCode2");
options.Conventions.AddPageRoute("/Compare", "compare/ProductCode1");

它处理 第一个产品的“/compare/p1” p1 和 p2 的“/compare/p1(vs)p2”

但是下面的 url 出现错误但是我在第一条路线上定义了它 "/比较/p1(vs)p2(vs)p3"

而且错误很有趣:

AmbiguousMatchException: The request matched multiple endpoints. Matches:
/Compare
/Compare
/Compare

没错,我为所有 3 个路线都定义了这个页面,第 3 个产品有什么问题??

【问题讨论】:

【参考方案1】:

我通过将所有路由替换为一个并将那个参数拆分为所有产品代码来解决了这个问题。

【讨论】:

以上是关于ASP.NET Core 3.1 Razor 页面路由不明确匹配异常的主要内容,如果未能解决你的问题,请参考以下文章

Asp.net Core 3.1-如何从控制器返回到 Razor 页面?

[ASP.NET Core 3.1 MVC Razor页面仅在模型成员有效时显示图标

创建基于ASP.NET core 3.1 的RazorPagesMovie项目-应用模型类配合基架生成工具生成Razor页面

在 ASP.net core 3.1 Razor Pages 中打印 PDF

ASP.NET Core 3.1 Razor 将字符串转换为日期时间

Asp.Net Core 上的 Razor 页面 - 添加了 Razor 页面但无法让页面显示