在MVC3中使用WebForm

  MvcWebForm一直是有爭議的兩個平臺,園子裏也有不少人寫過這方面的文章,給我印象比較深的是去年的時候看過的兩篇文章http://www.cnblogs.com/mikelij/archive/2012/05/13/2496768.htmlhtml

http://www.cnblogs.com/mikelij/archive/2012/07/09/2581768.html做者以webform中常見的viewstate做爲切入點講解,寫的仍是不錯的,能夠去看看。相比於webformviewstate,對於mvc,個人的第一感受就是輕、簡潔,固然了,mvc也還有不少其餘的優勢,感興趣的童鞋能夠自行谷姐,這不是本文的重點,我就不作對比了:)web

  既然mvcwebform各有各的好處,那麼咱們就能夠根據須要在項目中都使用它,因而就有個問題產生了,咱們都知道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 訪問

效果以下:

相關文章
相關標籤/搜索