在MVC3中使用WebForm


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

http://www.cnblogs.com/mikelij/archive/2012/07/09/2581768.html作者以webform中常見的viewstate作為切入點講解,寫的還是不錯的,可以去看看。相比於webformviewstate,對於mvc,我的的第一感覺就是輕、簡潔,當然了,mvc也還有很多其他的優點,感興趣的童鞋可以自行谷姐,這不是本文的重點,我就不做對比了:)

  既然mvcwebform各有各的好處,那么我們就可以根據需要在項目中都使用它,於是就有個問題產生了,我們都知道mvc可以通過配置路由來訪問,既然他們在一個項目中,那webform怎么訪問呢?於是去查MSDN,我們知道了原來從asp.net4.0后,webform中也可以使用路由了,http://msdn.microsoft.com/zh-cn/library/dd329551(d=lightweight).aspx  好吧,既然都可以使用路由,那我就不廢話了,直接開始吧。

  新建項目如下:

  我得承認用控件開發報表是很快速的。

接下來在Global.asax.cs里面加上:routes.IgnoreRoute("WebForms/{weform}");

然后通過地址訪問 http://localhost:4017/WebForms/ReportModule/Default.aspx 

結果如下:

  有時我們不希望出現webforms文件夾,這時我們就可以寫一個類去繼承IRouteHandler

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中加上新路由規則:

 routes.Add(new Route("Web/{module}/{page}",new WebFormsRouteHandler()));

我們再通過地址 http://localhost:4017/web/ReportModule/Default 訪問

效果如下:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM