在webForm项目加添加asp.net mvc项目同时开发

本章将讨论如果在传统的webform项目中怎么添加asp.net mvc项目,实现混合项目开发!

 

下面我们将一步一步操作:

1.新建一个mvc项目,等会可以从这里copy一些东西到webform项目里面的!

2.在旧的webForm项目里面添加引用这三个类库,分别是:system.web.mvc,system.web.abstractions,system.web.routing.

3.把mvc项目的结构copy到webform项目里面去(将content,controllers,scripts,views这四个文件夹copy到webform项目根目录下,把这四个文件添加到这个项目里面去)

4.接下来就是修改配置文件了,有三个地方要修改

  1.在程序集节点<assembies>中添加3个相关的asp.net 3.5 mvc程序集

        <add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral,             PublicKeyToken=31BF3856AD364E35"/>
    <add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add assembly="System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

        2.在页面节点<pages>添加相关的命名空间

    <namespaces>
         <add namespace="System.Web.Mvc"/>
         <add namespace="System.Web.Mvc.Ajax"/>
         <add namespace="System.Web.Mvc.Html"/>
         <add namespace="System.Web.Routing"/>
         <add namespace="System.Linq"/>
         <add namespace="System.Collections.Generic"/>
      </namespaces>

   3.在http模块节点<httpModules>添加程序入口

          <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

5.设置路由(记得引入system.web.mvc命名空间,要不然找不到IgnoreRoute这个方法)

  protected void Application_Start(object sender, EventArgs e)
        {
            RegisterRoutes(RouteTable.Routes);
        }
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
            routes.MapRoute(
                "Default",                                              // Route name
                "{controller}/{action}/{id}",                           // URL with parameters
                new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
            );
        }

 

routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");表示aspx页面不经过路由处理.其它的应该看得懂了,就是路由基本规则了!

 

然后就大公告成了!

 

这时可能会问,那两者是否可以互相关联,答案是当然可以了!比如你在mvc页面里面可以直接转到webform页面(Response.Redirect("default.aspx");),在webform页面想转到mvc页面也很简单(Response.Redirect("Home/Index");)

至于数据的传递,可以使用session,在页面的session里面存入值之后,在控制器也可以直接用session取得!两个session没有本质上的区别,在webform页面提交了表单之后,在控制器也可以使用form来获取 response.form[文本id].tostring();就可以获得了!

 

基本就是这样了!

 

通过本文的讨论,相信大部分朋友都可以掌握基本的应用了,当然,我也可能会理解错其中的一些东西,希望大家指出,欢迎讨论!

posted on 2009-11-30 09:52  Ss_Andy  阅读(2226)  评论(0编辑  收藏  举报