ASP.NET WebForm URL rewrite in VS2010
在C#2.0时期,要把 /Farm.aspx?farmid=1映射成/farm/1,需要借助IISRewriter或者其它第三方组件,也可以自己用代码定义路由规则,要修改web.config,甚至要写正则表达式去匹配规则,总之是一件比较麻烦的事情。有了VS2010,asp.net4.0中asp.net mvc中的路由规则全部可以用于webform了,这个功能实现起来也变得非常容易。
在VS2010平台下,URL重写变得容易很多。
首先在Globle文件中自定义路由规则,如下:
view plain
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
RegisterRoutes(RouteTable.Routes);
}
view plain
/// <summary>
/// 自定义路由规则
/// </summary>
/// <param name="routes"></param>
/// 参数含义:
/// 第一个参数:路由名称
/// 第二个参数:路由规则
/// 第三个参数:该路由规则交给哪一个页面来处理
void RegisterRoutes(RouteCollection routes)
{
routes.MapPageRoute("farm-browse", "farms/{farmid}", "~/Farm.aspx");
}
然后在指定的处理页面中接收参数,即在Farm.aspx中处理,如下:
view plain
protected int FarmId
{
get
{
int id;
int.TryParse(Page.RouteData.Values["farmid"].ToString(), out id);
return id;
}
}
以上两步就完成URL重定向的功能。
ASPX页面中,直接使用路由规则即可,如下:
view plain
<ul>
<% using (ASPNETDBEntities db = new ASPNETDBEntities())
{
var farms = db.Farms.OrderByDescending(f => f.DateCreated).Take(10);
if (farms != null && farms.Count() > 0)
{
foreach (var farm in farms)
{
%>
<li><a href="<strong>..</strong>/farms/<%= farm.FarmId %>">
<%= farm.FarmTitle %></a><br />
<%= farm.DateCreated.ToString("yyyy-MM-dd") %></li>
<%}
}
} %>
</ul>
作者“Keep It Short And Simple”
补充:Web开发 , ASP.Net ,