1.示例演示:通过模板将布尔值显示为RadioButton。
默认情况下,无论是在编辑模式还是显示模式下,布尔属性值总是以复选框的形式出现。将创建以下类型的员工,该类型具有布尔属性IsPartTime来指示该员工是否为兼职员工。
类员工{[显示名称('名称')]公共字符串名称{ get设置;} [DisplayName ('department')]公共字符串Department { get设置;} [DisplayName('兼职与否')]public bool IsPartTime { get;设置;}}如果我们直接调用HtmlHelperTModel的EditorForModel方法,在Employee类型为Model的强类型视图中显示Employee对象,下图显示了默认的呈现效果。我们可以看到,指示它是否是兼职的IsPartTime属性对应于一个CheckBox。
我们现在想要的是将所有布尔对象显示为两个RadioButton,具体的显示效果如下图所示。然后我们可以通过创建一个模型类型为布尔的视图来创建一个模板,并使其改变所有布尔对象的默认渲染效果。
由于我们需要在编辑模式下更改布尔类型对象的表示形式,因此我们需要将分布式视图定义为EditorTemplates目录下的模板,它可以存在于View/Shared或View/{ ControllerName }下。因为ASP.NET MVC使用数据类型作为匹配条件来查找对应的模板,所以我们需要将部分模板View命名为Boolean。下面的代码片段反映了这个部分尝试的整个定义。我们通过调用HtmlHelper的radiobutton方法,将两个布尔值(True/False)映射到对应的radio button,并使用表格进行布局。
@ model bool table trtd @ html . radio button(',true,model)为/tdtd @ html.radiobutton(',false,Model) No /td /tr /table值得一提的是,我们没有指定RadioButton的名称,而是指定了一个空字符串,这个空字符串将由Html本身来命名,而命名的基础就是本章的核心:Model metadata。员工的IspartTime属性在界面上对应的HTML中呈现,如下图所示。我们可以看到,radio类型的两个输入元素的名称会自动分配相应的属性名称。美中不足的是他们有相同的身份证。如果您想使标识唯一,您可以更仔细地自定义模板。
Div class=' editor-label ' label for='是兼职'/label/Div class=' editor-field ' table tr TD input checked=' checked ' id='是兼职' name='是兼职' type=' radio' value=' true './yes/Td input id=' is art time ' name=' is art time ' type=' radio ' value=' false '/no/TD/tr/table/div ii。预定义的模板。
上面我们介绍了如何通过View创建模板来控制UI界面上某个数据类型或者某个目标元素的HTML呈现。事实上,在ASP.NET的MVC中也定义了一系列预定义的模板。当我们调用html helper/html helper Model的模板方法来渲染一个Model或Model的成员时,系统会根据当前的渲染模式(显示模式和编辑模式)和Model的元数据获取特定的模板(自定义模板或预定义模板)。因为Model有两种呈现模式:显示和编辑,所以ASP.NET MVC中定义的默认模板分为这两种基本类型。接下来,我们将介绍这些预定义的模板和最终的HTML演示。
电子邮件该模板专门针对用于表示EmailAddress的字符串类型的数据成员,它将目标元素呈现为带有前缀为“mailto :”(a/a)的href属性的链接。由于此模板仅用于显示电子邮件地址,因此仅在显示模式或ASP.NET下有效。