Mvc和WebForm一直是有爭議的兩個平臺,園子裏也有不少人寫過這方面的文章,給我印象比較深的是去年的時候看過的兩篇文章http://www.cnblogs.com/mikelij/archive/2012/05/13/2496768.html和html
http://www.cnblogs.com/mikelij/archive/2012/07/09/2581768.html做者以webform中常見的viewstate做爲切入點講解,寫的仍是不錯的,能夠去看看。相比於webform的viewstate,對於mvc,個人的第一感受就是輕、簡潔,固然了,mvc也還有不少其餘的優勢,感興趣的童鞋能夠自行谷姐,這不是本文的重點,我就不作對比了:)。web
既然mvc和webform各有各的好處,那麼咱們就能夠根據須要在項目中都使用它,因而就有個問題產生了,咱們都知道mvc能夠經過配置路由來訪問,既然他們在一個項目中,那webform怎麼訪問呢?因而去查MSDN,咱們知道了原來從asp.net4.0後,webform中也可使用路由了,http://msdn.microsoft.com/zh-cn/library/dd329551(d=lightweight).aspx 好吧,既然均可以使用路由,那我就不廢話了,直接開始吧。mvc
新建項目以下:asp.net
我得認可用控件開發報表是很快速的。ui
接下來在Global.asax.cs裏面加上:routes.IgnoreRoute("WebForms/{weform}");spa
而後經過地址訪問 http://localhost:4017/WebForms/ReportModule/Default.aspx .net
結果以下:code
有時咱們不但願出現webforms文件夾,這時咱們就能夠寫一個類去繼承IRouteHandlerorm
public class WebFormsRouteHandler : IRouteHandler { public IHttpHandler GetHttpHandler(RequestContext requestContext) { string moduleName = requestContext.RouteData.GetRequiredString("module"); string pageName = requestContext.RouteData.GetRequiredString("page"); return BuildManager.CreateInstanceFromVirtualPath(string.Format("~/WebForms/{0}/{1}.aspx",moduleName, pageName),typeof(System.Web.UI.Page)) as IHttpHandler; } }
而後在Global.asax.cs中加上新路由規則:htm
routes.Add(new Route("Web/{module}/{page}",new WebFormsRouteHandler()));
咱們再經過地址 http://localhost:4017/web/ReportModule/Default 訪問
效果以下: