[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文字:宋体+黑色
作者语录:斜体+黑色/红色/蓝色
我的心得:@开头