博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WebForm中使用MVC
阅读量:6970 次
发布时间:2019-06-27

本文共 2254 字,大约阅读时间需要 7 分钟。

http://www.cnblogs.com/encoding/articles/3556046.html
*************************************************************
  • 前言

掐指一算,3年没写博了,好懒的说。。。


众所周知,MVC现在越来越火了,不懂MVC的程序猿都不好意思说自己是搞网站开发的。

虽然MVC与WebForm各有所长,但是基于种种原因,很多用WebForm开发的网站需要转移到MVC上面来。但是,原有的系统上面有非常非常 庞大的业务代码和页面代码,在实际工作中,不可能将一个WebForm开发的网站一次性全部转换到MVC框架中来,那么这个时候,就要用到本文说的:在 WebForm中使用MVC。采用一个页面一个页面的方式,逐渐将整个网站全部转移到MVC中。


  • 为WebForm项目添加引用

要使用MVC,肯定要为项目添加MVC的引用,由于是我们自己操作,肯定不会像通过VS创建MVC项目那样引用一大篇的dll。必须引入的有以下几个:

System.Web.Abstractions;System.Web.DynamicData;System.Web.Mvc;System.Web.Optimization;System.Web.Razor;System.Web.WebPages;
  • 建立MVC项目结构

使用MVC最大的一个好处就是细分了网站层,所以MVC中约定俗成的几个目录一个都不能少。Controllers、Views、Models、Scripts、Content几个文件是必须按照MVC项目结构搬移过来。

当然,Controllers和Models你可以自定义到其他dll中去,Scripts和Content你也可以使用自己的目录结构存放。但是 Views必须放在根目录下,并且Views目录中结构必须如下图所示(Shared目录和目录中的文件不能少,_ViewStart、 Web.config文件也不能少,至于Home目录,是自己开发的,可以不必理会):

  • 配置Web.config文件

原有WebForm的Web.config中的节点不要随便动,将下面的config内容中各个节点添加到原有的Web.config文件中。

关键是configSections、appSettings、system.web.webPages.razor三个节点,如果有丢失,那么cshtml文件将在开发时无法识别razor语法(运行时能够识别)。

system.web节点中的两段引用如果缺失,MVC页面将无法访问。

system.webServer中的<modules runAllManagedModulesForAllRequests="true"/>节点如果丢失,MVC页面将无法访问。

  • 注册路由

好了,结构搭建完成,现在要为MVC的路由进行注册了。

WebForm中有一个文件叫做全局应用程序类Global.asax,如果没有,就添加一个。

在Golbal.asax的Application_Start事件中,添加以下代码:

RouteCollection routes = RouteTable.Routes;            //避免对 Web 资源文件(例如 WebResource.axd 或 ScriptResource.axd)的请求传递给控制器              routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); //避免aspx页面的请求传递给控制器 routes.IgnoreRoute("{resource}.aspx/{*pathInfo}"); //路由注册 routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } );

怎么样,这段代码是不是很熟悉?不错,它就是MVC项目中App_Start目录下的RouteConfig.cs文件的RegisterRoutes方法代码。

  • 测试一下

来个gif动态图。

OK,收工。

懒惰,是一个通病。 努力,必会成为一种习惯。
 
你可能感兴趣的文章
focus-hooks
查看>>
Deep Learning 工具收集
查看>>
jqGrid的分页
查看>>
iOS7 隐藏状态栏
查看>>
获取类的属性列表、方法列表、实例变量列表
查看>>
学习笔记:逻辑运算符也有优先级区别
查看>>
小蚂蚁学习Redis笔记(12)——Redis重要特性——发布及订阅消息
查看>>
Docker with CentOS
查看>>
js单双引号嵌套传值问题
查看>>
Unity 消息发送机制 解析
查看>>
浅析网络端口及端口防御
查看>>
PDF文件在线压缩的方法
查看>>
将dwg格式CAD图纸快速转换成彩色BMP格式如何操作?
查看>>
【centreon监控】启用短信和邮件报警
查看>>
linux错误---UNEXPECTED INCONSISTENCY; RUN FSCK MANUALLY
查看>>
Python之列表
查看>>
马哥第3期运维班第五周作业
查看>>
nginx的简单rewrite规则和开启密码认证功能
查看>>
【RHEL5.5】Linux下RPM包安装GCC
查看>>
python 集合、函数
查看>>