在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
原文:http://www.cnblogs.com/know/archive/2012/03/31/2426730.html
Asp.net MVC前两年就听说了,但一直没有去用,中间只是粗略的了解了下,在做的栏目改版时才真正的去学习和使用——刚开始学,对其'路由'和请求解析执行的过程感觉比较神秘,但随着项目中的应用、功能的逐一实现,发现所谓的Asp.net MVC也就那样,清楚了核心的几点东西,就可以比较'得心应手'的玩转了。这篇博客就是要跟大家分享下:我所了解的Asp.net MVC和如何灵活使用! 本文目录:
什么是ASP.NET MVC MVC:Model-View-Controller,模型-视图-控制器模式 Asp.net MVC是微软的开发基于MVC开发的一个易于被测试的框架.它具有以下特性: 没有数据回传 没有在页面中保存视图状态 开发者可以完全掌控页面的呈现过程 易于单元测试 易于测试驱动开发 可扩展、可替换 支持WebForm中的有关特性,如:用户控件、母版页、数据绑定、本地化等 不在基于文件目录结构,而是将URL映射到控制器中 Asp.net MVC与传统WebForm的主要区别 1.Asp.net MVC不再有传统WebForm中的控件,于是开发人员不用再去了解每个控件的使用和其诸多事件的用法及响应顺序等,降低了开发人员入门的难度,也让web开发回归原始——就是客户端发送请求request,服务端响应response,类似于jsp,php... 2.Asp.net MVC易于测试,且相对传统WebForm应用程序(目录)结构更加清晰、页面更加'干净'。 创建一个MVC应用程序并运行 创建一个MVC应用程序,如下图:
运行,如图: 注:与传统WebForm应用程序不同的是:1.不能设置起始页——设置了也没用,真正的起始页是由路由和DefaultController决定的。 2.不能在vs和iis中浏览某个view页面,只能在调试中执行。 Controller,Model,View的介绍及关联 首先,对于一个URL请求,如:http://xysj.s187.com/storeclaim,应用程序会根据Global.asax文件里的路由配置,如下代码: 1 routes.MapRoute("storeclaim", "storeclaim/{action}/{storename}/{pagenum}", new 找到最匹配的路由配置项,上面的路由已经限定了此路由请求的控制器是StoreClaimController(MVC控制器解析规则是:控制器名称+Controller),并在参数url("storeclaim/{action}/{storename}/{pagenum}")中限定了匹配此路由的请求必须是以 当前网站域名/storeclaim 格式的Url,以上路由如果改为如下: 1 routes.MapRoute("storeclaim", "storeclaimoper/{action}/{storename}/{pagenum}", new 2 { 3 controller = "storeclaim", 4 action = "Index", 5 storename = "", 6 pagenum = 1 7 }); 当请求http://xysj.s187.com/storeclaimoper Url时,实现的效果是一样,因为请求的URl由哪个控制器处理是由 路由配置对象中的 controller = "storeclaim" 此行代码决定的, 根据URl找到匹配的路由,并分析出了处理此请求的控制器,此时就需要清楚该由控制器中的那个action(操作)处理响应请求——上面的url因为没有(传递或者说是附加)action路由参数,就 会根据 路由配置对象中的 action = "Index" 此行代码,在StoreClaimController控制器类中找到名字为Index的方法 1 /// <summary> 控制器的名称在 View文件夹/当前控制器的名称文件夹 下找到xystoreinfo名称的View页面,如图: ;第二个参数是View页面需要的数据模型实体对象(此对象可以用于呈现编辑或浏览产品详情、列表等)。 看上图红色的区域,你就发现一个很熟悉的东西:泛型,是的,Asp.net MVC在创建视图的时可以选择强类型 设置此View的数据模型,如下图 这样就可以在View页面中很方便的使用或呈现数据模型中的可访问到的属性或方法等,如:<%=Model.AssignedStoreId %>。 Global.asax 路由注册及注意 1.路由的配置一定要将最深层次、精准的路由写在前面,就像在捕获代码异常时:一定要将子(类)异常写在最上面,如: 对于路由,则是: 1 public static void RegisterRoutes(RouteCollection routes) 2.每个注册路由的路由配置对象中的 controller = "Message", action = "GetList" 这两个属性值必须要设置! 路由或请求参数的获取及路由调试 1.路由参数的获取,如下: 1 #region 路由参数获得判断 2.路由中的 路由参数 不能从 Request中获得,非路由参数的请求参数可以在Request对象中获得,具体方式与WebForm中相同。 提交数据模型验证 此部分,我不想多说,你只需要新建一个带有示例的MVC3应用程序 或 创建一个 支架模版为Edit或Create的视图就可以比较清楚的其具体应用。看如下代码,不得不说的是:MVC3 里的数据模型验证还是挺不错的! 1 public class ChangePasswordModel
View Code
MVC主要表单标签类的用法介绍
分页标签
数据模型绑定标签,看名知其意
Ajax请求实现及返回Json对象
Ajax请求js代码
响应action代码
好了,比较匆忙的写完了这篇已经拖了几天的博客,感觉想把自己懂的东西写的让别人能比较容易看懂或者面面俱到并不是一件容易的事——正像这篇博客的标题,我写的无论详细好坏与否,也只能算是'道破',如果你想更深入的了解和学习,就得自己多用、多想、更全面的了解,也希望看了感觉有疑问或在Asp.net MVC3方面有更多了解的朋友,能大家一起交流学习! |
请发表评论