【问题标题】:ASP.NET 'Friendly URL' module - not working for root URLASP.NET“友好 URL”模块 - 不适用于根 URL
【发布时间】:2014-04-04 15:28:27
【问题描述】:

我在 ASP.NET 4.5 中成功使用了“友好 URL”模块

在路由配置中我可以添加这样的路由:

routes.MapPageRoute("mypage", "mypage/{mypageName}", "~/mypage.aspx");

对于这样的网址:

mysite.com/mypage/hello

在“mypage.aspx”页面中,我可以得到这样的 URL 段:

using Microsoft.AspNet.FriendlyUrls;

// Get URL segments
IList<string> segments = Request.GetFriendlyUrlSegments();
if (segments.Count > 0)
{
    // Get first segment
    string url = segments[0];



}

但是,我无法让这适用于根 URL。例如'我的 site.com/ttee'

我想获取 'ttee' 并将其传递到页面中。但是 'Request.GetFriendlyUrlSegments()' 为根返回 0。

我怎样才能做到最好?

【问题讨论】:

    标签: asp.net friendly-url


    【解决方案1】:
    routes.MapPageRoute("mypage", "mypage/{mypageName}", "~/mypage.aspx");
    

    这仅适用于这种格式的 URL:

    www.example.com/mypage/changingparthere
    

    如果你想做的话

    www.example.com/changablemypage
    

    设置为:

    routes.MapPageRoute("mypage", "{mypageName}", "~/mypage.aspx");
    

    但正如您所见,它几乎可以捕获所有内容。所以请确保它是 Global.asax 上的最后一个路由。

    【讨论】:

    • 谢谢。如何在我使用的页面中最好地获取 {mypageName} 的值?
    • 您不需要那些友好的网址。只需写 string url=RouteData.Values["mypageName"].ToString();
    • 这里的关键是:IList segments = Request.GetFriendlyUrlSegments(); > 这适用于非路由的“友好”URL,这就是您需要路由的 URL:url=RouteData.Values["mypageName"].ToString();
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-17
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 2019-06-02
    • 2014-12-12
    相关资源
    最近更新 更多