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

在ASP.NET WebForm(.NET 3.5 SP1)中使用ASP.NET路由(Routing)-第二版

2013-03-02 19:01 417 查看
  看了几节asp.net mvc的教程,又回过头来反思WebForm。忽然觉得,其实WebForm也不是像我原来理解的那么糟糕;而MVC模式,也并不是像我原来想象的那么完美的。任何事物都是多面性的,这句话一点也不差。所以,在IT行业里,就是不能太完美主义。

  进入正题,System.Web.Routing的确是个好东西,可以映射出各式各样好看、容易理解的URL。据说本来是给asp.net mvc 框架写的,后来以独立程序集的方式发布在于.net 3.5 下面。所以,第一个准备工作:要安装完整的.net 3.5 sp1。

  第二步呢,就是创建一个基于.Net Framework 3.5的Asp.Net WebApplication吧。创建完之后,要添加对“System.Web.Routing”程序集的引用。

View Code

using System;
using System.Web.UI;

namespace UrlRoutingDemo
{
public partial class _Default : RoutePage
{
protected void Page_Load(object sender, EventArgs e)
{
Doit();
}

void Doit()
{
string tmp = string.Empty;
if (GetRouteValue("page") != null)
{
tmp = string.Format("第{0}条新闻的第{1}页", RouteValues["page"]);
}
else
{
if (GetRouteValue("id") != null)
tmp = string.Format("第{0}个类别", GetRouteValue("id"));
if (GetRouteValue("year") != null)
tmp = string.Format("{0}年 {1}月 {2}日的新闻", RouteValues["year"], RouteValues["month"], RouteValues["day"]);
if (Request.QueryString["q"] != null)
tmp = "您搜索的是: " + Server.UrlDecode(Request.QueryString["q"]);
}
Literal1.Text = tmp;
}
}
}


  完了?按下F5让自己“惊喜”一下吧,哈!

  当我们的UrlRoting项目发布后部署到IIS中的时候,遇到的第一个问题可能会是访问路由页面后会返回404错误!

  IIS6的解决办法:选择相应的网站,在右键“属性”界面中选择“主目录”(网站)或“虚拟目录”(虚拟目录)选项卡;单击配置按钮,并在“应用程序配置”界面的“映射”选项卡的“插入通配符应用程序映射(执行顺序)”处点击“插入”,然后选择.net的isapi,通常是“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll”,去掉“确认文件是否存在”前面的勾,然后确定。

  IIS7+的解决办法:在应用程序的Web.Config文件“system.webServer”节下面的modules和handlers中分别添加下面的内容,保存后重启网站即可。

modules中添加

<remove name="Session"/>
<add name="Session" type="System.Web.SessionState.SessionStateModule" preCondition="" />
<remove name="UrlRoutingModule"/>
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule,System.Web.Routing,Version=3.5.0.0,Culture=neutral,PublicKeyToken=31BF3856AD364E35" />


handlers中添加

<add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />


PS:

此文章原文于2011年在我的百度空间发表,重新编排后转到此处!

近期有精力会再再介绍一下设置路由参数默认值、路由约束等方面的内容。

下载DEMO

参考:

http://msdn.microsoft.com/zh-cn/library/cc668201(v=VS.90).aspx 感谢MSDN

http://deepumi.wordpress.com/2010/02/27/url-routing-in-asp-net-web-forms/ 感谢此文作者

/article/4761017.html (这篇文章中提到的方法也不错,不用自定义Page类)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: