ASPMvc博客总结

上传人:xy****7 文档编号:45333039 上传时间:2018-06-15 格式:DOC 页数:13 大小:219.50KB
返回 下载 相关 举报
ASPMvc博客总结_第1页
第1页 / 共13页
ASPMvc博客总结_第2页
第2页 / 共13页
ASPMvc博客总结_第3页
第3页 / 共13页
ASPMvc博客总结_第4页
第4页 / 共13页
ASPMvc博客总结_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《ASPMvc博客总结》由会员分享,可在线阅读,更多相关《ASPMvc博客总结(13页珍藏版)》请在金锄头文库上搜索。

1、一、概述 1、单元测试的 NUnit, MBUnit, MSTest, XUnit 以及其他的框架 2、ASP.NET MVC 应用的默认目录结构有三个顶层目录:Controllers、Models、Views,控制器类置于 /Controllers 目录之中,数据模型类置于/Models 目录之中,视图模板置于 /Views 目录之中。ASP.NET MVC 框架并不强迫你总是使用这个结构。二、URL 映射到 Controller 类1、把 URL 映射到 Controller 类在大多数 web 框架(ASP, PHP, JSP, ASP.NET WebForms 等等)里,到来的 URL

2、 一般都映射到保存在硬盘上的模板文件。MVC 框架一般以不同的方式把 URL 映射到服务器代码类(Controllers(控制器))上,这个类负责处理到来的请求,处理用户输 入和交互,执行基于输入和交互的相应的应用和数据逻辑。然后,一个 Controller 类调用单独的“视图”组件,该组件负责生成请求 的实际的 HTML 输出。在如何把 URL 映射到 Controller 类方面,该引擎提供了很多灵活性。ASP.NET MVC URL 映射 routing 引擎的路径选择规则:(1)选出一个 Controller 来运行。(2)把 URL 里定义的变量,传递给 Controller 的 A

3、ction。2、映射到控制器类的默认 ASP.NET MVC URL Routing 规则当你创建一个 MVC 项目时,默认的路径映射规则拥有这样的格式:“/controller/action/id”。(1) controller:把 Url 的开始部分映射到类上,该类名称遵循 UrlPathController 的模式。(2) action:controller 里的 action 方法。ASP.NET 框架根据 URL routing 规则来自动调用适当的 action 方法来执行。还可以覆盖 Controller 基类中的“Execute”方法,手工编写我们自己的 if/else/切换逻

4、辑,对照用户请求的 URL,然后执行适 当的逻辑来处理这个请求。(3)id:如果 URL 中在控制器名称和 action 名称之后还有任何子路径的话,在默认情形下,它将作为一个名为“id”的参数处理,会 自动地作为一个方法参数传给我们的控制器 action 方法。如果你的 action 方法有个参数的话,MVC 框架会检查进来的请求的数据, 看是否有个同样名称的对应的 HTTP 请求值。如果有的话,它会自动将其作为参数传入 action 方法。Controller 基类呈现了可以使用的 Request 和 Response 对象,它们是基于接口(interface)的。3、使用视图显示界面ac

5、tion 方法在调用 RenderView() 方法时提供的跟视图有关的数据对象,来显示适当的界面:在上面的代码例子里,RenderView 方法的“Categories”参数表示我们要显示的视图名称,第二个参数是我们要传给视图对象并要 视图对象据此显示适当 HTML 界面的分类对象的列表。ASP.NET MVC 框架支持任何模板引擎(包括象 NVelocity, Brail,以及你自己想要编写的任何模板引擎)来帮助生成界面。在默认 情形下, ASP.NET MVC 框架使用 ASP.NET 中现有的 ASP.NET 页面 (.aspx), 母版页 (.master), 和用户控件 (.asc

6、x) 。4、Controller.RedirectToActionASP.NET MVC 还提供了 Controller.RedirectToAction()辅助方法,你可以在控制器里使用来进行转向操作(URL 是使用 URL 路 径选择系统计算出来的)。 例如,当在控制器里调用下面代码时: 在内部,它会生成一个对 Response.Redirect(“/Search/Beverages“)的调用。二、单元测试Public void Detail()ProductsController controller=new ProductsController();/ProductsControlle

7、r 里注入了一个伪(dummy)“ViewFactory”实现的。覆盖了默认的 ViewFactory,否则,默认的 ViewFactory 会创建和显示我们的视图。我们可以使用这个测试 ViewFactory 实现来做隔离,TestViewEngine testView=new TestViewRngine();Controller.viewFactory=testView;Controller.Detail(3);Assert.AreEqual(typeof(Product),testView.View.ViewData.GetType(),”Product object passed t

8、o View”)Assert.AreEqual(3,testview.view.GetViewData().ProductID,”Correct Product object Passed to view”);Assert.AreEqual(“Detail,testView.View.ViewName,”Correct View Readered”);三、View1、理解/Views 目录结构Shared:存放公用的母版页、用户控件和视图的地点。ControllerName(控制器名):控制器所用的视图。执行过程:当在 Controller 中调用 RenderView(string view

9、Name)方法时,MVC 框架会自动地首先在 ViewsControllerName 目录里寻找对应的.aspx 或 .ascx 视图模板,如果它找不到适当的视图模板,然后它会在 ViewsShared 目录寻找。2、视图MVC 视图页默认是从 System.Web.Mvc.ViewPage 基类继承而来的,该基类提供了构建界面时所用的许多特定于 MVC 的辅助方 法和属性。ViewPage 的其中一个属性名叫“ViewData”,通过它,可以访问 Controller 作为参数传给 RenderView()方法的特定 于视图的数据对象。从你的视图里,你可以后期绑定或以强类型的方式访问“Vie

10、wData”。如果你的视图是从 ViewPage 继承而来,那么 ViewData 属 性是个后期绑定的字典。如果你的视图是从基于泛型的 ViewPage继承而来,其中 T 表示 Controller 传给视图的 ViewData 的 数据对象的类型,那么 ViewData 属性就是强类型的,匹配你的 Controller 传入的数据的类型。显示数据:1) 在.aspx 文件里使用行内代码使用 和 的句法来在 html 标识内嵌入显示代码2) 在.aspx 文件中使用服务器控件,然后在后台代码里使用数据绑定。9、Html 对象是 ViewPage 基类的一个辅助属性,ActionLink 方法

11、是它的一个辅助方法,它方便你动态地生成连回到控制器的 action 方法的 HTML 超链接。第一个参数表示要显示的超链接的内容,第二个参数是个匿名对象 ,它代表用以生成实际 URL 的一串值,你可以认为它是生成字典 的一个比较干净的方式。如果 routing 规则是象这样的: /那么在 ProductController 的 Category 视图里编写这样的代码时:Url.Action除了使用 Html.ActionLink 外,ASP.NET MVC 还有个 Url.Action()视图辅助方法。该方法生成原生的字符串 URL,然后你可以任 何方式来使用它们。例如,下面的代码片段: 会使

12、用 URL 路径选择系统返回下面这个原生的 URL(而不是包装在 元素里): 使用使用 Lambda 表达式从路径选择系统构建输出的表达式从路径选择系统构建输出的 URLASP.NET MVC 框架还支持使用强类型机制创建 action 路径的能力,这些强类型机制为 URL 辅助方法提供了编译时检查和 intellisense。这是通过使用泛型和新的 VB 和 C#对 Lambda 表达式的支持来实现的。下面这个匿名类型 ActionLink 调用:也可以写成:方法方法 1:使用:使用 Controller.ViewData 字典来传递字典来传递 ViewDataController 基类有个

13、 ViewData 字典属性,可以用来填充你要传给视图的数据。你使用键/值模式将对象加入 ViewData 字典。ViewPage 基类提供一个 ViewData 字典属性,我们可以在视图网页里访问由控制器添加的数据对象。然后我们可以取出这些数据 对象,使用它们来显示 HTML 输出,可以用服务器控件的方式,或者用 显示代码的方式。注: 因为 ViewData 的类型是含有“objects”的字典,为了对它使用 foreach 语句,我们需要将 ViewData“Products“的类型转 换成 List 或者 IEnumerable。我在页面上引用了 System.Collections.G

14、eneric 和 MyStore.Models 命名空间 以避免输入 List 和 Product 类型的完整名称。 注: 上面使用了“var”关键词,这是 VS 2008 中新的 C# 和 VB “类型推断”特性的一个例子(在这里阅读我以前的相关贴子)。因 为我们将 ViewData“Products“ 转换成了 List,我们在 List.aspx 文件中的 prduct 变量上得到了完整的 intellisense。方法方法 2:使用强类型类来传递:使用强类型类来传递 ViewData在第一个预览版中,只有“ActionLink“方法是内置于 System.Web.Extensions(

15、目前实现核心 ASP.NET MVC 框架的程序集)中 的。但我们还将有一个单独的 “MVCToolkit“ 下载,你可以加到你的项目中,来得到你可以在第一个预览版中使用的的几十个辅助 方法。要安装 MVCToolkit HTML 辅助方法的话,只要将 MVCToolkit.dll 程序集添加为你的项目的引用即可。Html.Select()Html.TextBox(“”,ViewData.Product.unitPrice)MVCToolkit 程序集,你可以利用在 System.Web.Mvc.BindingHelpers 命名空间下实现的一个有用的扩展方法,来对此代码作些 清理。这个扩展方

16、法叫做“UpdateFrom”,可以用在任何 .NET 对象上。它接受一个字典作为参数,然后,它会对任何匹配该对象 的公开属性的键,自动对本身进行属性赋值。Product product=new Product();Product.UpdateFrom(request.Form);/把客户端的数据填充到 product 对象中了。注: 如果你因为安全的原因,想要更明确些,只允许某些属性可以更新的话,你还可以向 UpdateFrom 方法传入一个可以更新的属 性名称的字符串数组: 拦截器(Actio n Filter)1、横切于 ASP.NET MVC 执行过程。在 ASP.NET MVC 执行中提供扩展功能(HttpModule)。可作“任何”事件(日志、缓存、异常处 理) 2、成员: (1)OnActionExecuting:参数 ActionExecutingContext(ActionMethod、ActionParameters、Cancel、Result)。身份验证、输 出服务器端缓存。 (2)OnActionEx

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号