关键词搜索

源码搜索 ×
×

WebForm与MVC混用

发布2013-09-12浏览12967次

详情内容

在现有的WebForm项目中加入MVC,可以吗?

西蒙说,可以。

怎么加呢?

我的开发环境是:WIN7 + IIS7.5 + VS2012

一、WebForm项目添加引用:


我都是选了最高的版本。


二、将MVC项目的部分文件拷贝到WEBFORM项目

拷贝controller和views,也许还有content,scripts。Views似乎是必须的,也不能改名字,拷贝到根目录下。Controller应该拷贝到APP_CODE。



三、修改配置文件web.config

 

  1. <compilation debug="true" targetFramework="4.0">
  2. <assemblies>
  3. <add assembly="System.Web.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  4. <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  5. <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  6. <add assembly="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  7. </assemblies>
  8. </compilation>
  9. <pages>
  10. <namespaces>
  11. <add namespace="System.Web.Mvc"/>
  12. <add namespace="System.Web.Mvc.Ajax"/>
  13. <add namespace="System.Web.Mvc.Html"/>
  14. <add namespace="System.Web.Routing"/>
  15. <add namespace="System.Linq"/>
  16. <add namespace="System.Collections.Generic"/>
  17. </namespaces>
  18. </pages>
这里面,有些内容是添加引用后,系统自动写上去的

最重要的,可别忘了这一句:

<modules runAllManagedModulesForAllRequests="true"/>

写在  <system.webServer> 里。没有这一句,将无法使用MVC模式。

四、设置路由

添加global.asax文件,设置路由

  1. <%@ Application Language="C#" %>
  2. <%@ Import Namespace="System.Web.Routing" %>
  3. <%@ Import Namespace="System.Web.Mvc" %>
  4. <script runat="server">
  5. void Application_Start(object sender, EventArgs e)
  6. {
  7. // 在应用程序启动时运行的代码
  8. //AreaRegistration.RegisterAllAreas();
  9. RegisterRoutes(RouteTable.Routes);
  10. }
  11. public static void RegisterRoutes(RouteCollection routes)
  12. {
  13. //避免对 Web 资源文件(例如 WebResource.axd 或 ScriptResource.axd)的请求传递给控制器
  14. routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
  15. routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
  16. routes.MapRoute(
  17. name: "store" // 路由名称
  18. , url: "{id}/{controller}/{action}" // 带有参数的 URL。看到没,不一定是{controller}放在前面,顺序可以自己调
  19. , defaults: new { controller = @"store", action = @"show", id = UrlParameter.Optional }//默认
  20. , constraints: new { id = @"[1-9]\d{3,8}" }//约束
  21. );
  22. routes.MapRoute(
  23. "test2",
  24. "{controller}/{action}/{id}",
  25. new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 参数默认值
  26. );
  27. }

其中,routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");是照顾现有这些直接访问.aspx的WEBFORM方式。

基本就是这样了。

对于IIS6,可以到微软下载MVC3,MVC4,依次安装好,就可以直接使用了,也没有出现MSDN上说的,要在路由上加上*.MVC的问题。详见拙作:

我的IIS7.5竟然不支持ASP.NET路由

http://blog.csdn.net/leftfist/article/details/9969797





相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载