ASP.NET 4.0路由和子文件夹

时间:2010-05-14 01:19:33

标签: asp.net routing url-routing asp.net-4.0

我有一个像这样的文件夹结构:

www.mysite.com/About/About.aspx

我在这样的用户控件中有一个链接:

<a href="~/About/About" id="aboutLink" title="About" runat="server">About</a>

在我的RegisterRoutes()方法中,我有这个:

routes.MapPageRoute("", "About/About/", "~/About/About.aspx");

它可以工作,但产生以下网址:

www.mysite.com/About/About

我想要的是:

www.mysite.com/About

这是否可以通过开箱即用的4.0路由进行?

更新2 - 05-14-2010:

显然,我通过将.aspx Web表单命名为包含文件夹来引入一个额外的问题。最后,这对我有用:

RouteTable.Routes.MapPageRoute("", "About/", "~/AboutUs/About.aspx");

<asp:HyperLink ID="aboutLink" NavigateUrl="~/About" 
    Text="About" runat="server"></asp:HyperLink>

Raj提供的链接帮助我找到答案:-)
http://msdn.microsoft.com/en-us/library/cc668201.aspx

3 个答案:

答案 0 :(得分:2)

我的问题不明确。 试试这个

routes.MapPageRoute("", "About/", "~/About/About.aspx"); 

另外,请考虑使用RouteURl表达式。

http://msdn.microsoft.com/en-us/library/dd329551.aspx

http://msdn.microsoft.com/en-us/library/cc668176.aspx

答案 1 :(得分:1)

第二个参数是URL的外观和访问虚拟页面的方法

// Global.asax
void Application_Start(object sender, EventArgs e) 
{
    // Code that runs on application startup
    System.Web.Routing.RouteTable.Routes.MapPageRoute("", "About", "~/About/About.aspx");
}


<a href="/About" id="aboutLink" title="About" runat="server">About</a>

答案 2 :(得分:0)

您的a标记链接到/About/About,因此,当然,这就是您所获得的。您是否尝试将其指向/About? (并相应地改变路线定义)

或者我是否误解了这个问题?