Asp.net Url Routing
首先,需要System.Web.Routing.dll文件,因地制宜。公司没安装sp1,所以网上下载了个。
需要加上2个注册在web.config
代码
<assemblies>
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="System.Web.Abstractions,Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</assemblies>
//是最后2个。如果没Abstractions,也要引入System.Web.Abstractions.dll
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="System.Web.Abstractions,Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</assemblies>
//是最后2个。如果没Abstractions,也要引入System.Web.Abstractions.dll
代码
<httpModules>
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>
当然,还得加这个注册
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>
当然,还得加这个注册
然后是类的写法,添加一个类继承IRouteHandler
代码
public class WebFormRouteHandler : IRouteHandler
{
public WebFormRouteHandler()
{
}
public string VirtualPath { get; private set; }
public WebFormRouteHandler(string virtualPath)
{
this.VirtualPath = virtualPath;
}
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
var page = BuildManager.CreateInstanceFromVirtualPath(VirtualPath, typeof(Page)) as IHttpHandler;
return page;
}
}
{
public WebFormRouteHandler()
{
}
public string VirtualPath { get; private set; }
public WebFormRouteHandler(string virtualPath)
{
this.VirtualPath = virtualPath;
}
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
var page = BuildManager.CreateInstanceFromVirtualPath(VirtualPath, typeof(Page)) as IHttpHandler;
return page;
}
}
添加个全局处理程序
代码
protected void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.Add("Default", new Route("Home", new WebFormRouteHandler("~/Default.aspx")));
routes.Add("Personal", new Route("Personal/Home", new WebFormRouteHandler("~/TradeInformation/Default.aspx")));
routes.Add("Personal.AddTrade", new Route("Personal/AddTrade", new WebFormRouteHandler("~/TradeInformation/AddTradeChoice.aspx")));
routes.Add("Front.Dog", new Route("Trade/Dog", new WebFormRouteHandler("~/Dog/TradeInformation.aspx")));
routes.Add("Front.Cat", new Route("Trade/Cat", new WebFormRouteHandler("~/Cat/TradeInformation.aspx")));
routes.Add("Front.Others", new Route("Trade/Others", new WebFormRouteHandler("~/Others/TradeInformation.aspx")));
routes.Add("Front.Equipment", new Route("Trade/Equipment", new WebFormRouteHandler("~/Equipment/TradeInformation.aspx")));
routes.Add("Front.Wholesale", new Route("Trade/Wholesale", new WebFormRouteHandler("~/Wholesale/TradeInformation.aspx")));
routes.Add("Front.CatDetail", new Route("Trade/CatDetail", new WebFormRouteHandler("~/Cat/CatTradeInformationDetail.aspx")));
}
{
RegisterRoutes(RouteTable.Routes);
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.Add("Default", new Route("Home", new WebFormRouteHandler("~/Default.aspx")));
routes.Add("Personal", new Route("Personal/Home", new WebFormRouteHandler("~/TradeInformation/Default.aspx")));
routes.Add("Personal.AddTrade", new Route("Personal/AddTrade", new WebFormRouteHandler("~/TradeInformation/AddTradeChoice.aspx")));
routes.Add("Front.Dog", new Route("Trade/Dog", new WebFormRouteHandler("~/Dog/TradeInformation.aspx")));
routes.Add("Front.Cat", new Route("Trade/Cat", new WebFormRouteHandler("~/Cat/TradeInformation.aspx")));
routes.Add("Front.Others", new Route("Trade/Others", new WebFormRouteHandler("~/Others/TradeInformation.aspx")));
routes.Add("Front.Equipment", new Route("Trade/Equipment", new WebFormRouteHandler("~/Equipment/TradeInformation.aspx")));
routes.Add("Front.Wholesale", new Route("Trade/Wholesale", new WebFormRouteHandler("~/Wholesale/TradeInformation.aspx")));
routes.Add("Front.CatDetail", new Route("Trade/CatDetail", new WebFormRouteHandler("~/Cat/CatTradeInformationDetail.aspx")));
}
然后页面访问就可以访问对应的标记。例如