您的位置:首页 > 编程语言 > ASP

在Asp.net WebForm中使用Route

2014-05-26 11:47 357 查看

在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接口

下面转自/article/10941862.html

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 窗体使用路由
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: