webForm里面写mvc
2017-06-07 20:25
239 查看
在现有的WebForm项目中加入MVC,可以吗?
西蒙说,可以。
怎么加呢?
我的开发环境是:WIN7 + IIS7.5 + VS2012
一、WebForm项目添加引用:
我都是选了最高的版本。
二、将MVC项目的部分文件拷贝到WEBFORM项目
拷贝controller和views,也许还有content,scripts。Views似乎是必须的,也不能改名字,拷贝到根目录下。Controller应该拷贝到APP_CODE。
三、修改配置文件web.config
[html] view
plaincopy
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Web.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</assemblies>
</compilation>
<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>
</pages>
这里面,有些内容是添加引用后,系统自动写上去的
最重要的,可别忘了这一句:
[html] view
plaincopy
<modules runAllManagedModulesForAllRequests="true"/>
写在 <system.webServer>
里。没有这一句,将无法使用MVC模式。
四、设置路由
添加global.asax文件,设置路由
[csharp] view
plaincopy
<%@ Application Language="C#" %>
<%@ Import Namespace="System.Web.Routing" %>
<%@ Import Namespace="System.Web.Mvc" %>
<script runat="server">
void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
//AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
}
public static void RegisterRoutes(RouteCollection routes)
{
//避免对 Web 资源文件(例如 WebResource.axd 或 ScriptResource.axd)的请求传递给控制器
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
routes.MapRoute(
name: "store" // 路由名称
, url: "{id}/{controller}/{action}" // 带有参数的 URL。看到没,不一定是{controller}放在前面,顺序可以自己调
, defaults: new { controller = @"store", action = @"show", id = UrlParameter.Optional }//默认
, constraints: new { id = @"[1-9]\d{3,8}" }//约束
);
routes.MapRoute(
"test2",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 参数默认值
);
}
其中,routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");是照顾现有这些直接访问.aspx的WEBFORM方式。
基本就是这样了。
对于IIS6,可以到微软下载MVC3,MVC4,依次安装好,就可以直接使用了,也没有出现MSDN上说的,要在路由上加上*.MVC的问题。详见拙作:
我的IIS7.5竟然不支持ASP.NET路由
http://blog.csdn.net/leftfist/article/details/9969797
西蒙说,可以。
怎么加呢?
我的开发环境是:WIN7 + IIS7.5 + VS2012
一、WebForm项目添加引用:
我都是选了最高的版本。
二、将MVC项目的部分文件拷贝到WEBFORM项目
拷贝controller和views,也许还有content,scripts。Views似乎是必须的,也不能改名字,拷贝到根目录下。Controller应该拷贝到APP_CODE。
三、修改配置文件web.config
[html] view
plaincopy
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Web.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</assemblies>
</compilation>
<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>
</pages>
这里面,有些内容是添加引用后,系统自动写上去的
最重要的,可别忘了这一句:
[html] view
plaincopy
<modules runAllManagedModulesForAllRequests="true"/>
写在 <system.webServer>
里。没有这一句,将无法使用MVC模式。
四、设置路由
添加global.asax文件,设置路由
[csharp] view
plaincopy
<%@ Application Language="C#" %>
<%@ Import Namespace="System.Web.Routing" %>
<%@ Import Namespace="System.Web.Mvc" %>
<script runat="server">
void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
//AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
}
public static void RegisterRoutes(RouteCollection routes)
{
//避免对 Web 资源文件(例如 WebResource.axd 或 ScriptResource.axd)的请求传递给控制器
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
routes.MapRoute(
name: "store" // 路由名称
, url: "{id}/{controller}/{action}" // 带有参数的 URL。看到没,不一定是{controller}放在前面,顺序可以自己调
, defaults: new { controller = @"store", action = @"show", id = UrlParameter.Optional }//默认
, constraints: new { id = @"[1-9]\d{3,8}" }//约束
);
routes.MapRoute(
"test2",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 参数默认值
);
}
其中,routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");是照顾现有这些直接访问.aspx的WEBFORM方式。
基本就是这样了。
对于IIS6,可以到微软下载MVC3,MVC4,依次安装好,就可以直接使用了,也没有出现MSDN上说的,要在路由上加上*.MVC的问题。详见拙作:
我的IIS7.5竟然不支持ASP.NET路由
http://blog.csdn.net/leftfist/article/details/9969797
相关文章推荐
- 在mvc里面有htmlhelper方法,在webform里面有什么?
- WebForm里面的MVC?
- 关于mschart控件在mvc项目中的webform里面显示不出图片的问题
- Cocos2d-x里面如何实现MVC(三)
- 正确认识WebForm与Asp.NET MVC (转)
- 一起谈.NET技术,不走寻常路:在WebForm中使用MVC
- MVC&WebForm对照学习:文件上传(以图片为例)
- mvc controller放目录里面该怎么办?
- MVC、WebForm和Silverlight的一点比较
- Web编程模型:WebForm、MVP还是MVC?
- 解析ASP.NET WebForm和Mvc开发的区别
- (读书笔记)Asp.net Mvc 与WebForm 混合开发
- 什么时候该用MVC,什么时候该用Webform?
- 在 ASP.NET MVC 项目中使用 WebForm
- MVC里面布局你们具体如何整,求帮
- yii2 入门教程1-------MVC里面的VC
- cocos2d里面如何实现mvc系列
- 发布一个从webform改进而来的asp.net mvc分页工具类
- Webform和MVC,为什么MVC更好一些?
- MVC与WebForm最大的区别