zoukankan      html  css  js  c++  java
  • 在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 访问

    效果如下:

     

     

  • 相关阅读:
    3-2
    3-1
    2-11
    2-10
    2-7
    2-9
    springboot 使用undertow代替tomcat容器提高吞吐量
    springboot—JVM性能参数调优
    springbootDay3
    springboot_Mybaits_PageHelper
  • 原文地址:https://www.cnblogs.com/qiuyan/p/3153985.html
Copyright © 2011-2022 走看看