More Related Content
Similar to Asp.net mvc 培训 (20)
Asp.net mvc 培训
- 1. ASP.NET MVC 培训 深圳市国泰安信息技术有限公司 Daniel Chow http://www.cnblogs.com/DanielChow
- 2. ASP.NET MVC 的基本概念 提 纲 基础介绍 HtmlHelper ,UrlHelper, Filter Url Routing and Test Tool Data Annotations and Validation Controller 和 View 之间的数据传输 ASP.NET MVC 生命周期 AJAX & Unobtrusive Javascript 问答 (QA)
- 3. ASP.NET MVC 的基本概念 MVC ( Model-View-Controller ,模型—视图—控制器模式)用于表示一种软件架构模式。它把软件系统分为三个基本部分:模型( Model ),视图( View )和控制器( Controller )。 MVC 本身是一种模式 , 它的核心思想是:把一个应用的输入、处理、输出流程按照 Model 、 View 、 Controller 的方式进行分离 我们今天讨论的 ASP.NET MVC , 是微软的一个开源产品 , 后续的讨论基于 ASP.NET MVC 3.0 版本 . 在 ASP.NET MVC 中的 MVC ,我的理解是一种表现层的 MVC 模式 , 也就是传统三层架构的 UI 层 .
- 11. Controller 和 View 之间的数据传输 与传统 WebForm 差别较大 , 从生命周期图上就可以看出 ASP.NET MVC 提供两种传值方法: 1 、 TempData[“Test”] 一次性的只能传递到下一个 View 2 、 ViewData[“Test”] 3 、 ViewBag .Test 等价于 2 , 写法不同而已 , 看起来是强类型,其实是动态类型 Controller: ViewData["Test"] = DateTime.Now.ToString(); TempData["TempTest"] = DateTime.Now.ToString(); ViewBag.TestBag = DateTime.Now.ToString(); View(Razor): @ViewData["Test"]<br /> @TempData["TempTest"]<br /> @ViewBag.TestBag<br />
- 13. AJAX & Unobtrusive Javascript 当打开 ClientValidationEnabled 之后,会自动产生客户端验证代码 : 产生的代码分两种: 1 、基于 MicrosoftAjax 的,会在页面中产生相应的验证脚本 2 、基于 Jquery 的 Unobtrusive Script 方式进行验证 , 需要打开 UnobtrusiveJavaScriptEnabled 验证的依据就是 View Model 上定义的约束 . 上一节提到的。 当然你还可以自己手写脚本进行验证。 Jquery AJAX 和 Controller 交付 : Controller: public ActionResult GetVersion() { var version = new { Main = 6 , Second = 4, Fix = 3, Build = 235 }; return Json(version);//,JsonRequestBehavior.AllowGet); }
- 16. MapRoute( string name, string url); MapRoute( string name, string url, object defaults); MapRoute( string name, string url, string [] namespaces); MapRoute( string name, string url, object defaults, object constraints); MapRoute( string name, string url, object defaults, string [] namespaces); MapRoute( string name, string url, object defaults, object constraints, string [] namespaces); defaults 参数 : url 参数的默认值 . 如果一个 url 只有 controller: localhost/home/ 而且我们只建立了一条 url 获取数据规则 : {controller}/{action} 那么这时就会为 action 参数设置 defaults 参数中规定的默认值 . defaults 参数是 Object 类型 , 所以可以传递一个匿名类型来初始化默认值 : new { controller = "Home", action = "Index" } 实例中使用的是三个参数的 MapRoute 方法 : routes.MapRoute ( “ Default” , “ {controller}/{action}/{id}” , new { controller = “ Home” , action = “ Index” , id = “” } );
- 17. constraints 参数 : 用来限定每个参数的规则或 Http 请求的类型 .constraints 属性是一个 RouteValueDictionary 对象 , 也就是一个字典表 , 但是这个字典表的值可以有两种 : 用于定义正则表达式的字符串。正则表达式不区分大小写。 一个用于实现 IRouteConstraint 接口且包含 Match 方法的对象。 通过使用正则表达式可以规定参数格式 , 比如 controller 参数只能为 4 位数字 : new { controller = @"{4}"} 通过第 IRouteConstraint 接口目前可以限制请求的类型 . 因为 System.Web.Routing 中提供了 HttpMethodConstraint 类 , 这个类实现了 IRouteConstraint 接口 . 我们可以通过为 RouteValueDictionary 字典对象添加键为 "httpMethod", 值为一个 HttpMethodConstraint 对象来为路由规则添加 HTTP 谓词的限制 , 比如限制一条路由规则只能处理 GET 请求 : httpMethod = new HttpMethodConstraint( "GET", "POST" ) 完整的代码如下 : routes.MapRoute( “ Default” , “ {controller}/{action}/{id}” , new { controller = “ Home” , action = “ Index” , id = “” }, new { controller = @“{4}" , httpMethod = new ttpMethodConstraint( "GET" , "POST" ) } );