URL ASP.net 中的路由路径问题

URL Routing Path issue in ASP.net

我在 url 路由方面遇到了非常奇怪的问题。我像那样为菜单栏定义了 3 个路由

routes.MapPageRoute("Article", "Article/{id}/{title}", "~/article.aspx");
routes.MapPageRoute("Contact", "Contact", "~/contact.aspx");            
routes.MapPageRoute("Category","Category/{id}/{name}","~/category.aspx");

当我点击联系我得到 www.website.com/Contact 然后我点击一篇文章我得到 www.website.com/Article/id/title 并且所有链接都有效。

但是当我先点击一篇文章然后点击联系人时,我有 www.website.com/Article/id/title/contact,或者 www.website/category/id/name/contact

此问题仅在从参数路由单击到非参数路由时出现。如果您有任何想法,我将很高兴。谢谢。

您的联系人 link 不是应用程序根目录亲属。您需要使其成为应用程序根目录。 Web 窗体中最简单的方法是切换为使用控件而不是普通锚标记。

<asp:HyperLink runat="server" NavigateUrl="~/Contact" Text="Contact" />

否则,当您尝试在不使其成为应用程序根目录的情况下导航到 Contact 时,它会假定 Contact 低于当前 URL 中最后一段的级别(因为 URL' s 曾经绑定到目录而不是语义路由,例如:在 www.website.com/Article/id/title 中它认为标题是目录)。

请注意,您也可以像 GetRouteUrl 那样在普通锚标记中执行一些内联​​ C#,但我记不起要使用的正确函数调用。 ResolveUrlResolveClientUrl 或类似的东西。