[MSDN]ASP.NET MVC2(4)MVC中的View实现技巧(下)
说明:本内容来自微软的webcast,讲师为苏鹏。视频没有书方便(想看哪页就看哪页),所以抄录要点和老师语录。
内容介绍
- Htmlhelper类
- ViewEngine 深入介绍
预备知识
- 安装VS2010
- 了解ASP.NET
- 了解设计模式基本概念
Html.ActionLink和Html.RouteLink
- 这两个控件都根据用户输入生成导航信息
- ActionLink根据生成调用另外Controller的链接
例1
例2
例3
Html.RouteLink部分
例1格式
Html.BeginForm
- 这一标记完全模拟<from>标记
类似html的form,from包含多个input 表单,至少有一个input type=button 。
方式1
方式2(推荐)
Html.Hidden
- 用于生成隐藏文本
Html.DropDownList 和 Html.ListBox
- 用于显示列表或选择值
- 用于限制用户的输入
强类型
Html.PassWord
- Password的工作方式和textbox一样,只是提交以后数据会自动清空
Html.RadioButton
- 生成一组选择值,并要求用户选择其一
Html.Partial和Html.RenderPartial
- 用于输出html片段
<%Html. RenderPartial (“MyUserControl”)%>
<%:Html.Partial(“MyUserControl”)%>
两个方法功能一样
RenderPartial相当于用Response.Write直接输出,在大型网站中,比Partial性能好。
RenderPartial用Response.Write输出不用编译,所以不要冒号。
Partial使用HtmlHelper类,所以需要冒号。
可输出ascx或aspx
Partial有四个构造函数
Html.Action和Html.RenderAction
- 用于实现指定Controller的指定Action 调用
Html.Action部分
上图:
A 在Home controller 中,可以调用[ChildActionOnly]-Menu()
B PartialView 新概念,是针对[ChildActionOnly]来做的,返回一小段数据。
强类型:
页面中调用Menu 的内容
RenderAction部分
可以加一般类型参数,还可以加特殊类型参数.-对象的实例.
Action 接受参数-类的实例
View 调用并显示
Action 不会像C#那样,根据函数的名字和参数重载
它需要加一个Attribute –[ActionName(“coolmenu”)]
ActionNmae 可以 代替函数名 for 调用时。
如下图:
调用的时候Action 应该用”coolmenu”,不是menu 。
Html.TextArea
- 用于生成<textarea>标签
不是richtextbox ,会对html 进行 encoding.
Html.ValidationMessage
- 显示ModelState 验证结果
验证结果显示在view 层,一些商业规则在Model层,不再 view层是框架决定的。
Html.ValidationSummary
- 显示一组报错数据
错误明细,条目。
统共的错误,笼统地错误。
HTML模板
- mvc2支持自定义模板
View引擎介绍
生命周期
记载时候,有两件事最重要
第一件事是它能玩得转,需要路由信息,要加入Router 。
第二件事是它需要知道使用哪种引擎做呈现,要加入ViewEngine。默认情况下不写。
先是清掉,然后注册。
使用View
- IViewEngine 接口
如何重写引擎-实现IViewEngine 接口
PartialView – childcontrol配对,view- controller 配对。
View类
- IView接口
一个函数输出的意思
ViewContext属性
Httpcontext:http上下文,response,request,server,session
Controller:controller实例
Routedata:返回router对象,让它知道从那个路由过来的。
ViewData:从controller带回的数据对象
Tempdata:保存一些从controller带回的数据对象,通常情况下它是一个cache过的对象。数据意义不大。
View:生成html显示
Clientvalidationenabled:是否在客户端验证,客户端不做就在Model做。
Formcontext:对客户端form 判定的时候依赖这个对象。包含客户端form的一些信息。
Formidgenerator:判定form的一些信息
Ischildaction:判定返回结果是什么。True的话,就用portailview来render, false的话就用view来做。
Parentactionviewcontext:用得少
Write:输出基本的信息
选择一个ViewEngine
默认的WebFormViewEngine优势
- 很像WebForm
- 使用masterpage
- 支持使用C#或者vb.net 写脚本
- 使用System.Web.Ui.Page
- VS2010自带智能感知
使用不同的ViewEngine
Spark(一种View引擎)
常见问题
附:
标题:粗体+斜体+黑色
ppt文字:宋体+黑色
作者语录:斜体+黑色/红色/蓝色
我的心得:@开头
![clip_image002[10] clip_image002[10]](https://images.cnblogs.com/cnblogs_com/htht66/201201/201201281225575433.jpg)
![clip_image004[10] clip_image004[10]](https://images.cnblogs.com/cnblogs_com/htht66/201201/201201281225586546.jpg)
![clip_image006[10] clip_image006[10]](https://images.cnblogs.com/cnblogs_com/htht66/201201/201201281225586023.jpg)
![clip_image008[10] clip_image008[10]](https://images.cnblogs.com/cnblogs_com/htht66/201201/201201281225587135.jpg)
![clip_image010[10] clip_image010[10]](https://images.cnblogs.com/cnblogs_com/htht66/201201/201201281225581072.jpg)
![clip_image012[10] clip_image012[10]](https://images.cnblogs.com/cnblogs_com/htht66/201201/201201281225584137.jpg)
![clip_image014[10] clip_image014[10]](https://images.cnblogs.com/cnblogs_com/htht66/201201/201201281225593613.jpg)
![clip_image016[10] clip_image016[10]](https://images.cnblogs.com/cnblogs_com/htht66/201201/201201281225595042.jpg)
![clip_image018[10] clip_image018[10]](https://images.cnblogs.com/cnblogs_com/htht66/201201/201201281225592567.jpg)
![clip_image020[10] clip_image020[10]](https://images.cnblogs.com/cnblogs_com/htht66/201201/2012012812255991.jpg)
![clip_image022[10] clip_image022[10]](https://images.cnblogs.com/cnblogs_com/htht66/201201/201201281225595664.jpg)
![clip_image024[18] clip_image024[18]](https://images.cnblogs.com/cnblogs_com/htht66/201201/201201281226009285.jpg)
![clip_image024[19] clip_image024[19]](https://images.cnblogs.com/cnblogs_com/htht66/201201/201201281226005174.jpg)
![clip_image026[10] clip_image026[10]](https://images.cnblogs.com/cnblogs_com/htht66/201201/201201281226002699.jpg)
![clip_image028[10] clip_image028[10]](https://images.cnblogs.com/cnblogs_com/htht66/201201/201201281226007400.jpg)
![clip_image030[10] clip_image030[10]](https://images.cnblogs.com/cnblogs_com/htht66/201201/201201281226016876.jpg)
![clip_image032[10] clip_image032[10]](https://images.cnblogs.com/cnblogs_com/htht66/201201/201201281226016353.jpg)
![clip_image034[10] clip_image034[10]](https://images.cnblogs.com/cnblogs_com/htht66/201201/201201281226019417.jpg)
![clip_image036[10] clip_image036[10]](https://images.cnblogs.com/cnblogs_com/htht66/201201/201201281226013354.jpg)
![clip_image038[10] clip_image038[10]](https://images.cnblogs.com/cnblogs_com/htht66/201201/201201281226016419.jpg)
![clip_image040[10] clip_image040[10]](https://images.cnblogs.com/cnblogs_com/htht66/201201/201201281226027532.jpg)
![clip_image042[10] clip_image042[10]](https://images.cnblogs.com/cnblogs_com/htht66/201201/201201281226025372.jpg)
![clip_image044[10] clip_image044[10]](https://images.cnblogs.com/cnblogs_com/htht66/201201/201201281226028437.jpg)
![clip_image046[10] clip_image046[10]](https://images.cnblogs.com/cnblogs_com/htht66/201201/201201281226033486.jpg)
![clip_image048[10] clip_image048[10]](https://images.cnblogs.com/cnblogs_com/htht66/201201/201201281226037107.jpg)
![clip_image050[10] clip_image050[10]](https://images.cnblogs.com/cnblogs_com/htht66/201201/20120128122603172.jpg)
![clip_image052[10] clip_image052[10]](https://images.cnblogs.com/cnblogs_com/htht66/201201/201201281226038012.jpg)
![clip_image054[10] clip_image054[10]](https://images.cnblogs.com/cnblogs_com/htht66/201201/201201281226039125.jpg)
![clip_image056[10] clip_image056[10]](https://images.cnblogs.com/cnblogs_com/htht66/201201/20120128122604238.jpg)
![clip_image058[10] clip_image058[10]](https://images.cnblogs.com/cnblogs_com/htht66/201201/201201281226046127.jpg)
![clip_image060[10] clip_image060[10]](https://images.cnblogs.com/cnblogs_com/htht66/201201/201201281226049191.jpg)
![clip_image062[10] clip_image062[10]](https://images.cnblogs.com/cnblogs_com/htht66/201201/201201281226042812.jpg)
![clip_image064[10] clip_image064[10]](https://images.cnblogs.com/cnblogs_com/htht66/201201/201201281226058701.jpg)
![clip_image066[10] clip_image066[10]](https://images.cnblogs.com/cnblogs_com/htht66/201201/201201281226058178.jpg)
浙公网安备 33010602011771号