首页  ·  知识 ·  
Label
      编辑:  图片来源:网络

本章将讨论如果在传统的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();就可以获得了!

基本就是这样了!

本文作者:网友 来源:网络收集
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读
也许感兴趣的
我们推荐的
主题最新
看看其它的
收藏至微信