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
代码
<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 { getprivate 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")));
            
           
        }

然后页面访问就可以访问对应的标记。例如

原文地址:https://www.cnblogs.com/drek_blog/p/1682396.html