通过ModelMetadata表示的Model元数据的一个主要的作用在于为定义在HtmlHelper和HtmlHelper<TModel>中的模板方法(这些模板方法包括Display/DisplayFor、Editor/EditorFor、DisplayForModel/EditForModel、Lable/LabelFor和DisplayText/DisplayTextFor等)提供用于最终生成HTML的元数据信息。
在调用这些方法的时候,如果我们指定了一个具体的通过分部View定义的模板,或者对应的ModelMetadata的TemplateHint属性具有一个模板名称,会自动采用该模板来生成最终的HTML。如果没有指定模板名称,则会根据数据类型在预定义的目录下去寻找做模板的分部View。如果找不到,则会利用默认的模板进行HTML的呈现。为了让读者对模板具有一个大概的认识,我们来做一个简单的实例演示。[本文已经同步到《How ASP.NET MVC Works?》中]
目录
一、 实例演示:通过模板将布尔值显示为RadioButton
二、 预定义模板
EmailAddress
HiddenInput
Html
Text与String
Url
MultilineText
Password
Decimal
Boolean
Collection
Object
一、 实例演示:通过模板将布尔值显示为RadioButton
在默认的情况下,不论是对于编辑模式还是显示模式,一个布尔类型的属性值总是以一个CheckBox的形式呈现出来。我们创建如下一个表示员工的类型Employee,它具有一个布尔类型的属性IsPartTime表示该员工是否为兼职。
- public class Employee
- {
- [DisplayName("姓名")]
- public string Name { get; set; }
- [DisplayName("部门")]
- public string Department { get; set; }
- [DisplayName("是否兼职")]
- public bool IsPartTime { get; set; }
- }
如果我们直接调用HtmlHelper<TModel>的EditorForModel方法将一个Employee对象显示在某个将Employee类型作为Model的强类型View中,下图体现了默认的呈现效果。我们可以看到表示是否为兼职的IsPartTime属性对应着一个CheckBox。
498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' title="image" style="border-top-width: 0px; padding-right: 0px; display: block; padding-left: 0px; border-left-width: 0px; float: none; background-image: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; padding-top: 0px; border-right-width: 0px" height="207" alt="image" width="387" border="0" src="/uploadfile/201301/5/FA151718326.png" />
现在我们希望的是将所有布尔类型对象显示为两个RadioButton,具体的显示效果如下图所示。那么我们就可以通过创建一个Model类型为Boolean的View来创建一个模板,使之改变所有布尔类型对象的默认呈现效果。
498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' title="image" s