2015-04-06 223 views
0

我有真正奇怪的网址路由问题。我定义了3条路线一样,ASP.net中的URL路径路径问题

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

这个问题只能从参数航线单击以非参数路由时发生。如果你有任何想法,我会很高兴。谢谢。

+0

您已经向我们展示了路由,但不是您如何在标记中创建路由。 – mason

+0

这里我的路线创建 '' and my nonparameter link in menubar is 'Contact' –

回答

1

您的联系链接不是应用程序根目录。您需要使其相对应用程序根目录。 Web窗体最简单的方法是切换到使用控件而不是简单的锚标记。

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

否则,当你尝试导航没有使它根相对应用程序联系,它假定联系是一个低于当前网址中的最后一个段的水平(因为网址的使用绑定到目录,而比语义路线,例如:在www.website.com/Article/id/title它认为标题是目录)。

请注意,您也可以在一个普通的锚点标记中执行一些内嵌的C#,与您的做法类似,但是我无法记住要使用正确的函数调用。 ResolveUrlResolveClientUrl或类似的东西。