支付宝扫码
领取余额宝体验金

轻云博客 > Asp .net网站开发 > 在Asp.net WebForm中使用Route

在Asp.net WebForm中使用Route

作者:如何建网站 / 日期:2018-6-3 8:12:00 / 分类:Asp .net网站开发 / 浏览:480

在webform中使用在MVC中惯用的Route还是比较简单的,对于不同的版本,方法不同,首先介绍一下Asp.net 4.0中的使用方法:

1)在全局文件中添加:

        public static void RegisterRoutes(RouteCollection routes)
        {
            //routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapPageRoute(
                "myNewRoute",
                "home",
                "~/Default.aspx"
            );
            routes.MapPageRoute(
                "myNewRoute2",
                "home/{item}",
                "~/About.aspx"
            );
        }


        void Application_Start(object sender, EventArgs e)
        {
            // 在应用程序启动时运行的代码
            RegisterRoutes(RouteTable.Routes);
        }

这个和在mvc中类似,就是添加一个路由规则到RouteCollege里面(路由规则我是乱写的,能说明问题即可)

2)OK,其实已经可以使用了,不信,你访问一下/home、/home/2。你会发现第一个访问的是"~/Default.aspx",第二个访问的是"~/About.aspx",可是这里还有问题,这url里面的{item}部分如何获取呢,用request这种方法是没法得到的,继续往下看。

3)其实获取参数的方式很简单,可以这样:

protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write(Page.RouteData.Values["item"].ToString());
        }

如果你访问的是/home/2,你将看见Response.Write出了一个“2”。我想您该明白了吧?

还有一些其他的获取办法:

<1>在控件中获取:

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
            SelectMethod="CreateT_User" TypeName="WebApplication1.T_User">
           
               
               
               
           
       
很优雅很眼熟吧。

<2>还有一种: 

4)那么,如果您想问如何获取Route构造出的url呢,如下:

string url=Page.GetRouteUrl("myNewRoute3",new{item=2});

还可以直接将构造的url加到控件中,比如:

<asp:HyperLink ID="HyperLink1" runat="server"
       NavigateUrl="<%$routeurl:routename=mynewroute2,item=2>">构造的url链接
很简单很直白吧,不过在asp.net 3中使用就没那么简单了

------------------------------------------------------------------------------------------------------------------------------------------------------------

如何在asp.net 3.5中使用Route呢,一个提示,实现IRouteHandler接口

下面转自http://blog.csdn.net/dupeng0811/article/details/4663704


ASP.NET 路由使您可以处理未映射到 Web 应用程序中物理文件的 URL 请求。默认情况下,在动态数据或 MVC 框架的一个 ASP.NET 应用程序中启用 ASP.NET 路由,而不在 ASP.NET 网站项目中启用路由。

因此,若要在 ASP.NET 网站中使用路由,必须采取措施来启用。

要实现在WebForm中使用路由,首先需要创建实现IRouteHandler接口的WebFormRouteHandler类,然后在全局应用程序类中配置路由的映射就可以了。

WebFormRouteHandler代码如下:

    public class WebFormRouteHanlder : IRouteHandler
    {
        public string VirtualPath
        { 
            get; private set; 
        }
        public WebFormRouteHanlder(string virtualPah)
        { 
            VirtualPath = virtualPah; 
        }

        public IHttpHandler GetHttpHandler(RequestContext requestContext)
        {
            var page = BuildManager.CreateInstanceFromVirtualPath(VirtualPath, typeof(Page)) as IHttpHandler;
            return page;
        }
    }

在Global.asax中配置路由

 protected void Application_Start(object sender, EventArgs e)
        {
            RegisterRoutes(RouteTable.Routes); 
        }
        public static void RegisterRoutes(RouteCollection routes) 
        {
            routes.Add("Named", new Route("foo/bar", new WebFormRouteHanlder("~/Default.aspx"))); 
            routes.Add("Number", new Route("one/two/three", new WebFormRouteHanlder("~/forms/haha.aspx"))); 
        }


还需要在Web.config中配置System.Web.Routing的引用!


   
  


运行,访问http://localhost:5598/foo/bar 。OK~~~~


参考:MSDN,MVC架构与实战 地址:如何:MSDN帮助 对 Web 窗体使用路由


本文标签:如何建网站
From:
分享到: