【问题标题】:Query string lost when using Web Forms routing使用 Web 窗体路由时查询字符串丢失
【发布时间】:2014-09-05 17:34:25
【问题描述】:

我正在尝试使用查询字符串路由到以下页面:

http://sitename/Pages/Pages.aspx?id=1 - route to - http://sitename/testpage1  
http://sitename/Pages/Pages.aspx?id=2 - route to - http://sitename/testpage2

我在 webform 项目中使用 Microsoft.AspNet.FriendlyUrls:

var settings = new FriendlyUrlSettings();
settings.AutoRedirectMode = RedirectMode.Permanent;
routes.EnableFriendlyUrls(settings);
routes.RouteExistingFiles = true;
routes.MapPageRoute("News Default", "News", "~/news/news.aspx");
routes.MapPageRoute("Contact Default", "Contacts", "~/contacts/contacts.aspx");

routes.MapPageRoute("Test1", "TestPage1", "~/Pages/Pages.aspx?id=1");
routes.MapPageRoute("Test2", "TestPage2", "~/Pages/Pages.aspx?id=2");

News Default 和 Contact Default 工作正常,但测试页不能正常工作,这会丢失查询字符串值。

【问题讨论】:

  • 当你说“但不是测试页”时,你到底是什么意思?
  • 如果我输入 http://sitename/testpage1 它使用 http://sitename/Pages/Pages.aspx 但会丢失查询字符串值。

标签: c# asp.net webforms url-routing


【解决方案1】:

我为路由使用了默认值。可能不是最优雅的解决方案,但它确实有效:

routes.MapPageRoute("Test2", "TestPage2/{id}", "~/Pages/Pages.aspx", true, 
new RouteValueDictionary {{"id","2"}}); 

【讨论】:

    猜你喜欢
    • 2011-09-12
    • 1970-01-01
    • 2014-08-23
    • 2018-09-22
    • 1970-01-01
    • 2015-04-12
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多