紧跟时代步伐,让我们拥抱MVC 3

简介: 作为一个开发者,我们不希望技术很快的更新,这是因为我们还没有完全掌握原来技术的基础上,又要掌握新的技术,作为天天忙忙碌碌的程序员,我们不希望还要额外的时间来学习,尤其是当我们的年龄,逐渐的变大的时候,但是有时候跟上时代的步伐也会给我们带来很多的好处,我今天要说的主题就是让我们从MVC 2 升级到 MVC3 吧,因为他带给我们太多的是惊喜,而不是学习的苦恼。

作为一个开发者,我们不希望技术很快的更新,这是因为我们还没有完全掌握原来技术的基础上,又要掌握新的技术,作为天天忙忙碌碌的程序员,我们不希望还要额外的时间来学习,尤其是当我们的年龄,逐渐的变大的时候,但是有时候跟上时代的步伐也会给我们带来很多的好处,我今天要说的主题就是让我们从MVC 2 升级到

MVC3 吧,因为他带给我们太多的是惊喜,而不是学习的苦恼。

可能有的园友要嗤之以鼻了,每个技术的更新都会带来新的学习点,我们总是要不断的学习来跟上他们,我们会很累的?的确,作为一名程序员,我们每天总是睡得很晚,起的很早,很多人喜欢叫我们夜猫子,因为只有在夜深人静的时候,我们才能投入精神来学习而不被打扰。但是就算我们不想每天这么累,我建议每个MVC人员,从MVC 2 升级到MVC 3 吧,因为他能改善我们很多的工作时间,增加工作效率,甚至会减少很多bug。你不信,那么我们就一起来分析一下,究竟是升级MVC 3带来的好处多,还是浪费我们学习的时间多吧。

asp.net MVC 2发布已经过去了很长时间了,我们也是从它开始来真正的开发我们的网站应用程序的,那么我们想一下,MVC 2 带给我们的有哪些不便之处呢?我来

列举几个比较重要的缺点吧。

  1. 如果你想在MVC 2中控制每个Action 的执行是否会出现异常,你会怎么做呢?你可能的做法就是定义一个可以处理异常的Attribute,然后分别应用到每个Action或者是Controller上,来捕获出现的异常信息?或者还有一种方法就是定义一个基类,让所有的Controller都继承自这个基类,而我们在基类中捕获异常。据我个人所知,大多数人采用的也就是这两种处理异常的方式,但是我们来考虑一下它的缺点。第一个处理异常的方式很明显就是啰嗦,第二个呢,使我们在Web  form时代通用的方式,肯定不错。但是我们从另一个方面来想一下,如果说我们除了要捕获异常信息之外,还要添加验证,那么应该怎么做呢?
    C#是单继承的,这个问题留给园友们来思考?在MVC 3中这个方式得到了解决,就是全局Attribute
  2. 在MVC 2中,如果你想添加一个后台管理系统,你会怎么办呢?其实这个有一个很好的解决办法,就是另外添加一个MVC 应用程序,用来作为后台管理系统?其实这真的是很好的处理方式,虽然我个人没有采用MVC 2开发过任何的系统,但是我还是非常欣赏这种折中的处理方式。但是这同样带来了另外一个问题,所有的资源文件得不到重用,甚至是css文件?你不得不重新建立各个目录来进行存放,还有一个非常直接但是非常重要的问题摆在了面前?htmlhelper类可以在后台管理系统中访问到前台页面吗?我们可以在同一个IIS目录下访问这两个不同的应用程序吗?我想是不能的,首先htmlHelper类中的方法是无法应用到前台页面的,还有在同一个地址中是不可能访问到这两个不同的应用程序的。这会带来非常严重的问题,毕竟在后台无法访问到前面页面就是客户无法接受的问题?我们又能如何处理呢?MVC 3中对应的就是Area
  3. Razor视图也是一个我们不得不提的重要因素,我们都知道MVC 2遵循的是web form时代的<%%>方式,这令我们在前台构造复杂的逻辑分离时是十分痛苦的?如果说你想在前台显示一个列表,那么foreach是我们都会采用的方式,我们知道在foreach中我们会使用到多少个<%%>,这会令我们的程序非常难懂,并且非常容易出错。而Razor视图就是利用@符号作为处理方式,简洁的方式绝对是我们想象不到的好用,只要你用了它,相信你会爱上他。
  4. MVC 3 使用到了Nuget,这是一个非常好的扩展插件,可以自动更新我们程序的引用到它的各个地方,甚至包括web.config配置文件。
  5. 在MVC 3中母板页没有了.master,所有文件的后缀名都是.cshtml,这当然会使我们收益,毕竟只要我们愿意,可以指定任何文件作为母板页,哪怕只是为了单纯的嵌套使用。
  6. MVC 3增强了htmlHelper类,让我们的开发更加的流畅。
  7. 依赖注入一直是我比较喜欢研究的一门技术,当然我现在还没有完全的入门依赖注入,但是我深刻的感受到MVC 3对依赖注入的完美支持,只要你愿意,任何IOC框架都可以应用到MVC 3程序中,从而实现更好的替换功能。

说了这些MVC 2中 相对MVC 3所不具有的缺点,相信你也可以更加感受到MVC 3真的值得我们去学习,虽然说现在MVC 4已经出来了,但是我还是建议你学习一下MVC 3,因为越级的学习会给我们以后的深入带来很大的困扰。虽然说我介绍的很大概,但是我想同是作为程序员的你,一定可以理解我说的是什么意思。尤其是MVC 3 所带来的全局Attribute以及Area两种技术的更新就可以让我们有足够的勇气去面对升级带来的任何麻烦。相信我吧,升级一下自己,带来的可能是更大的收获。

最后,展示一下MVC 3的razor语法,相信你会深深的爱上它。

 1 @{
 2     Layout = "~/views/shared/_layout.cshtml";
 3 }
 4 @using MvcWeb.Extensions
 5 <!DOCTYPE html>
 6 <html>
 7 <head>
 8     <title>Index</title>
 9     <script src="http://www.cnblogs.com/Scripts/jquery-1.5.1.js" type="text/javascript"></script>
10     <script type="text/javascript" src="@Url.Content("http://www.cnblogs.com/Scripts/jquery-1.5.1-vsdoc.js")"></script>
11     <script type="text/javascript" src="@Url.Content("http://www.cnblogs.com/scripts/jquery.validate.js")"></script>
12 </head>
13 <body>
14     <div>
15         <form id="form" action="" method="post">
16         <input type="text" id="user.Name" name="user.Name" />
17         @{  this.Jquery().Validations().Required("user.Name", "用户名是必填的  亲");}
18         <select name="user.Gender">
19             <option value="">Please select...</option>
20             <option value="1">Male</option>
21             <option value="2">Femle</option>
22         </select>
23         @{ this.Jquery().Validations().Required("user.Gender", null);}
24         <input type="text" name="user.Email" />
25         @{this.Jquery().Validations().Element("user.Email").Required("邮箱是必填的").Email("请填写正确的邮箱格式");}
26         <input type="submit" value="提交" />
27         </form>
28         @{
29             @:fdjkfdjkf
30         //  hjkhkjhkj@:fdfdfdf
31             <text>
32             dsdsd
33             dsdsd
34             dsdsd
35             </text>
36           
37         }
38     </div>
39     <script type="text/javascript">
40          @Html.Raw(this.Jquery().Validations().ToScripts("#form"))
41     </script>
42 </body>
43 </html>

razor语法一定会带给你很多的惊喜

 

 

 

我又回来了,回到了技术最前线,
相关文章
|
6月前
|
开发框架 开发者
拥抱变革:我的软件开发适应之旅
【4月更文挑战第22天】 在快速迭代的技术世界中,我作为一名软件工程师,经历了从抗拒到拥抱技术变革的过程。本文将分享我的个人旅程,探讨如何通过持续学习、灵活适应和积极实践来克服技术挑战,并最终实现职业生涯的成长与提升。
|
6月前
|
前端开发 开发者
探索前端技术的新趋势:Web组件化开发
【2月更文挑战第11天】 在这篇文章中,我们将深入探讨Web组件化开发的概念及其对前端开发领域的影响。不同于传统的摘要方式,我们通过一个故事来引入主题:想象在一个快速变化的数字世界里,有一座由各种小型、独立、可复用的建筑块构成的城市,每个建筑块都拥有独特的功能和风格,它们可以自由组合,创造出无限可能的城市景观。这座城市,就像是使用了Web组件化开发技术的前端项目。接下来,我们将详细探讨Web组件化开发的优势、实现方式以及面临的挑战,为前端开发者提供一个全面的视角来理解和应用这一重要的技术趋势。
|
23天前
|
存储 开发工具 开发者
紧跟科技潮流,揭秘鸿蒙应用开发新世界:打造全场景智慧生活,你准备好迎接这场技术革命了吗?
【10月更文挑战第20天】随着华为鸿蒙系统的发布,一个全新的操作系统生态正在形成。本文将探讨基于鸿蒙系统的应用软件开发,介绍其跨设备特性、开发工具链及框架,并通过示例代码展示开发流程,帮助开发者更好地理解和利用这一平台。
37 4
|
3月前
|
设计模式 存储 前端开发
MVC革命:如何用一个设计模式重塑你的应用架构,让代码重构变得戏剧性地简单!
【8月更文挑战第22天】自定义MVC(Model-View-Controller)设计模式将应用分为模型、视图和控制器三个核心组件,实现关注点分离,提升代码可维护性和扩展性。模型管理数据和业务逻辑,视图负责数据显示与用户交互,控制器处理用户输入并协调模型与视图。通过示例代码展示了基本的MVC框架实现,可根据需求扩展定制。MVC模式灵活性强,支持单元测试与多人协作,但需注意避免控制器过度复杂化。
42 1
|
3月前
|
开发者 Java 存储
JSF 与 CDI 携手共进,紧跟技术热点,激发开发者情感共鸣,开启高效开发新征程
【8月更文挑战第31天】JavaServer Faces (JSF) 与 Contexts and Dependency Injection (CDI) 在 Java EE 领域中紧密协作,助力开发者高效构建现代 Web 应用。JSF 凭借其丰富的组件库和页面导航功能受到青睐,而 CDI 则优雅地管理对象生命周期并实现依赖注入。两者结合,不仅简化了复杂企业应用的开发,还实现了松耦合架构,增强了代码的灵活性、可维护性和可扩展性。通过示例展示了如何利用 CDI 将业务服务对象注入 JSF Managed Bean,以及如何在不同页面间共享数据,突显了这一组合的强大功能。
39 0
|
3月前
|
Java 网络架构 数据格式
Struts 2 携手 RESTful:颠覆传统,重塑Web服务新纪元的史诗级组合!
【8月更文挑战第31天】《Struts 2 与 RESTful 设计:构建现代 Web 服务》介绍如何结合 Struts 2 框架与 RESTful 设计理念,构建高效、可扩展的 Web 服务。Struts 2 的 REST 插件提供简洁的 API 和约定,使开发者能快速创建符合 REST 规范的服务接口。通过在 `struts.xml` 中配置 `&lt;rest&gt;` 命名空间并使用注解如 `@Action`、`@GET` 等,可轻松定义服务路径及 HTTP 方法。
64 0
|
3月前
|
Java 前端开发 Spring
技术融合新潮流!Vaadin携手Spring Boot、React、Angular,引领Web开发变革,你准备好了吗?
【8月更文挑战第31天】本文探讨了Vaadin与Spring Boot、React及Angular等主流技术栈的最佳融合实践。Vaadin作为现代Java Web框架,与其他技术栈结合能更好地满足复杂应用需求。文中通过示例代码展示了如何在Spring Boot项目中集成Vaadin,以及如何在Vaadin项目中使用React和Angular组件,充分发挥各技术栈的优势,提升开发效率和用户体验。开发者可根据具体需求选择合适的技术组合。
73 0
|
3月前
|
持续交付 测试技术 jenkins
JSF 邂逅持续集成,紧跟技术热点潮流,开启高效开发之旅,引发开发者强烈情感共鸣
【8月更文挑战第31天】在快速发展的软件开发领域,JavaServer Faces(JSF)这一强大的Java Web应用框架与持续集成(CI)结合,可显著提升开发效率及软件质量。持续集成通过频繁的代码集成及自动化构建测试,实现快速反馈、高质量代码、加强团队协作及简化部署流程。以Jenkins为例,配合Maven或Gradle,可轻松搭建JSF项目的CI环境,通过JUnit和Selenium编写自动化测试,确保每次构建的稳定性和正确性。
62 0
|
3月前
|
SQL 安全 PHP
探寻PHP的现代演进之路:从Web开发到框架创新——揭秘PHP语言如何引领技术潮流
【8月更文挑战第2天】探索PHP的现代演进:从Web开发到框架创新
55 1
|
3月前
|
安全 编译器 API
【颠覆想象!】PHP 8横空出世:全新特性重塑Web开发格局,开发者必看的革命性变革之旅!
【8月更文挑战第7天】PHP 8通过引入一系列创新特性和改进,不仅提升了开发者的生产力,还加强了PHP作为现代Web开发语言的地位。随着PHP社区继续推动语言的发展,我们可以期待更多令人兴奋的变化。
57 0