在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 访问

效果以下:

相关文章
相关标签/搜索