您的位置:首页 > 编程语言 > ASP

也玩ASP.NET MVC 与 WebFroms 整合

2011-04-20 17:26 302 查看

目标:

以前有老的WebForm应用程序,希望一步步转移到MVC,或者使二者能够部署在一起,把MVC项目整合到之前的WebForm项目中。

步骤:

把MVC项目转移到WebForm WebApplication项目中

1.在之前的WebApplication中引用以下程序集

System.Web.Extensions

System.Web.Helpers

System.Web.Mvc

System.Web.Razor

System.Web.Routing

System.Web.WebPages

System.Web.WebPages.Razor

说明:System.Web.Razor与System.Web.WebPages.Razor可选,如果你的MVC项目使用了Razor引擎则必须添加

2.配置路由

把之前在Mvc项目中的路由配置拷贝到WebApplication中,然后在Application_Start事件中注册路由表

public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

}
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
RegisterRoutes(RouteTable.Routes);
}


当然别忘了在Global.aspx.cs中引用下列命名空间

using System.Web.Mvc;
using System.Web.Routing;


3.复制Controls,Models,View文件夹中的代码到WebApplication项目中

实际上在开发中大家是把Controls与Models等拆分成独立的项目来开发的,这样只要在WebApplication项目中引用这些项目即可。

不过目前有一个疑问是:controlers命名空间与当前项目的关系,MVC为何会调用aa.Controlers中的方法而不是,bb.Controlers中的方法

4.复制web.config中的一下配置节到新项目中<system.web>配置节下

<compilation debug="false" targetFramework="4.0">
<assemblies>
<add assembly="System.ComponentModel.Composition, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.RegularExpressions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></assemblies></compilation>


到这里,基本操作已经完成,上边只是操作简单是Demo,在真实的项目中可能还会遇到其他的问题,注意在操作过程中是否引用了一些其他的程序集等等,一步一步的加进来就可以了。

当然也是可以整合到Website项目中的,方法类似。在修改Global.aspx时注意使用以下语句引入命名空间

<%@ Import Namespace="System.Web.Mvc" %>
<%@ Import Namespace="System.Web.Routing" %>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: