在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 窗体使用路由
在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 窗体使用路由
相关文章推荐
- 在 ASP.NET WebForm 中使用 Route
- 在 ASP.NET WebForm中使用 Route
- 使用XML文件来动态配置ASP.NET MVC的Route规则
- ASP.Net 2.0中使用新的WebForm_DoPostBackWithOptions函数取代常规以前所使用的__doPostback函数
- 使用RouteValueDictionary简化对Asp.net MVC Helper的扩展
- asp.net webform中使用jquery flexgrid
- ASP.NET MVC 项目中使用 WebForm
- 在 ASP.NET MVC 项目中使用 WebForm
- 怎么在ASP.NET WebForm中使用Razor视图引擎(转载)
- ASP.NET 4.0 的新特性(2 在WebForm中使用Routing)(翻译)
- 在 ASP.NET MVC 项目中使用 WebForm
- 在 ASP.NET MVC 项目中使用 WebForm
- 认识 ASP.NET 3.5 MVC 路由 在WebForm项目中使用路由
- 使用XML文件来动态配置ASP.NET MVC的Route规则 【转】
- 在 ASP.NET MVC 项目中使用 WebForm
- 使用XML文件来动态配置ASP.NET MVC的Route规则
- 在 ASP.NET MVC 项目中使用 WebForm 【转】
- 在 ASP.NET MVC 项目中使用 WebForm
- 初识ASP.NET 3.5 MVC 路由 在WebForm项目中使用路由
- [备忘]ASP.NET MVC中RouteData.GetRequiredString("key")方法和RouteData.DataTokens["key"]方法使用上的区别