在Asp.net WebForm中使用Route



在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">
            <SelectParameters>
               <asp:RouteParameter DefaultValue="1" Name="fid" RouteKey="mm" Type="Int32" />
                <asp:Parameter Name="fname" Type="String" />
                <asp:Parameter Name="fsex" Type="Boolean" />
            </SelectParameters>
        </asp:ObjectDataSource>
很优雅很眼熟吧。

<2>还有一种: <asp:Label ID="Label1" runat="server" Text="<%$RouteValue:item %>"></asp:Label>

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:HyperLink>
很简单很直白吧,不过在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的引用!

<httpModules>
   <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  </httpModules>

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

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值