本章将讨论如果在传统的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