【问题标题】:FriendlyURLs - RouteData returns no valueFriendlyURLs - RouteData 不返回任何值
【发布时间】:2014-09-22 15:48:51
【问题描述】:

我通过 NuGet 将 Microsoft.Asp.Net.FriendlyUrls.Core.dll 安装到现有的 asp.net 4.5 webforms 网站。

我在 RouteConfig 文件中有以下内容

 public static void RegisterRoutes(RouteCollection routes)
        {
            var settings = new FriendlyUrlSettings();
            settings.AutoRedirectMode = RedirectMode.Permanent;
            routes.EnableFriendlyUrls(settings);

            routes.MapPageRoute("frUrl", "frurltest/{id}", "~/frurltest.aspx");
        }
**Global.asax**
void Application_Start(object sender, EventArgs e) 
{

        RouteConfig.RegisterRoutes(System.Web.Routing.RouteTable.Routes);
}

在 frurltest.aspx 中,我尝试从 RouteData 中获取“id”,如下所示:

string id = String.Empty;
if (RouteData.Values["id"] != null)
{
   id = RouteData.Values["id"].ToString();
}

Response.Write("id= " + id);

使用以下网址:http://localhost:48484/frurltest/2

我没有得到“id”的值。 RouteData.Values.Count=0。

知道我在这里缺少什么吗?

注意: 除了获取路由数据之外,友好的 url 功能正在工作,例如我导航到 /frutltest.aspx,它被更改为 /frutest,我可以使用 $RouteUrl 生成链接。

更新: 经过反复试验,我注意到如果我在 MapPageRoute 之后移动 EnableFriendlyUrls,它可以工作。即

public static void RegisterRoutes(RouteCollection routes)
{
      routes.MapPageRoute("frUrl", "frurltest/{id}", "~/frurltest.aspx");

      var settings = new FriendlyUrlSettings();
      settings.AutoRedirectMode = RedirectMode.Permanent;
      routes.EnableFriendlyUrls(settings);
}

我看到的所有示例都用作我最初的非工作代码。不知道为什么它适用于他们而不是我。这是一个类似的问题:RouteData.Values stays Empty

【问题讨论】:

  • Response.Write,自从 经典 天以来就没有见过这个了!
  • 当标签成为问题短语的自然部分时,我们通常不会从标题中删除它们...我们会从标题中删除标签,当它们只是添加到开头时或结束。
  • @ErikPhilips 所以据我所知..“asp.net 中的FriendlyURLs .....”是否允许?
  • 当标签自然是问题的一部分时,您通常可以在标题中使用标签。例如Create a relationship in Entity Framework for my models?。通常不接受的是标签只是被扔到乞求或结尾的问题,删除它们不会改变句子的问题。例如Entity Framework - Create a relationship for my modelsIt may be subtle but it's preferred.
  • 遇到同样的问题...这真的很奇怪。感谢您的解决方案:)

标签: asp.net asp.net-mvc friendly-url


【解决方案1】:

我知道现在回答为时已晚,但对我来说,当我将 URL 的第一个子句更改为与 aspx 页面不同的内容时,它就起作用了。 只需在"frurltest/{id}""~/frurltest.aspx"frurltest 应该不同,例如:routes.MapPageRoute("frUrl", "frurltestNEW/{id}", "~/frurltest.aspx");

【讨论】:

  • 我今天也发现了这一点,如果路由的第一部分与物理页面相同,我无法相信路由引擎会中断。很烦人。很高兴你明白了。
  • @Yasin 尽管这不应该发生(但不幸的是它确实发生了!)正确的答案是 EnableFriendlyUrls 应该移到 MapPageRoute 行之后。
猜你喜欢
  • 2015-05-20
  • 2016-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-04
  • 2019-05-22
相关资源
最近更新 更多