【问题标题】:Asp.net Route /something/{any url} to /{any url}Asp.net 路由 /something/{any url} 到 /{any url}
【发布时间】:2012-09-27 11:33:58
【问题描述】:

这件事快把我逼疯了:

浏览器 url -------> 物理路径

http://somedomain/routeName ----> ~/Default.aspx WORKS

http://somedomain/routeName/anypage.aspx ----> ~/anypage.aspx  WORKS

http://somedomain/routeName/anyfolder ----> ~/anyfolder/Default.aspx DOESNT WORK

http://somedomain/routeName/anyfolder/anypage.aspx ----> ~/anyfolder/anypage.aspx WORKS

其中 anypage.aspx 是任何 aspx 页面

其中anyfolder 是任意路径

我正在使用这条路线:

var sb = new StringBuilder("(");
foreach (Poll item in DataProvider.Get<IPollProvider>().GetAll())
{
    sb.AppendFormat("{0}|", item.Name);
}
sb.Length--;
sb.Append(")");
RouteTable.Routes.MapPageRoute("Alias", "{pollName}/{*url}", "~/{url}", true, new RouteValueDictionary{{"url","~/Default.aspx"}}, new RouteValueDictionary { { "pollName", sb.ToString() } });

这是一个经典的 asp.net 站点,而不是 MVC

加载了 UrlRoutingModule 的 IIS 7 集成模式

<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

【问题讨论】:

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


    【解决方案1】:

    我找到了方法:

    在路线前添加

    RouteTable.Routes.MapPageRoute("Alias", "{pollName}/{*url}", "~/{url}", true, new RouteValueDictionary{{"url","Default.aspx"}}, new RouteValueDictionary { { "pollName", sb.ToString() } });
    

    我要处理的每条路径的路线:

    //for http://somedomain/routeName/admin
    
    RouteTable.Routes.MapPageRoute("AliasAdmin", "{pollName}/Admin/{*url}", "~/Admin/{url}", true, new RouteValueDictionary{{"url","Default.aspx"}}, new RouteValueDictionary { { "pollName", sb.ToString() } });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-22
      • 2011-06-05
      • 2010-11-13
      • 2011-07-30
      相关资源
      最近更新 更多