<div>省</div> <div>江苏省</div> <div>市</div> <div>苏州市</div> <div>区</div> <div>工业园区</div> <div>街道</div> <div>星湖街328号</div>
值得一提的是,Object模板在对属性进行遍历的过程中,不论是显示模式还是编辑模式,只会处理非复杂类型。也就是如果属性成员是一个复杂类型(不能支持从字符串类型的转换),它不会出现在最终生成的HTML中。
public class Contact { [DisplayName("姓名")] public string Name { get; set; } [DisplayName("电话")] public string PhoneNo { get; set; } [DisplayName("Email地址")] public string EmailAddress { get; set; } [DisplayName("联系地址")] public Address Address { get; set; } }
通过上面的代码片断,我们定义了一个表示联系人的数据类型Contact,它具有一个类型的Address的同名属性。现在我们创建一个具体的Contact对象,并 对包括Address 属性在内的所有属性进行初始化,然后通过如下的方式通过调用HtmlHelper<TModel>的DisplayForModel方法将它呈现在以此作为Model的View中。
@model Contact @Html.DisplayForModel()
从如下所示的HTML可以看出,Contact的数据成员Address由于是复杂类型,其内容并不会呈现出来。
<div>姓名</div> <div>张三</div> <div>电话</div> <div>1234567890</div> <div>Email地址</div> <div>zhangsan@gmail.com</div>
我们可以有两种方式解决这个问题,其实就是通过为Address类型定义各类专门的模板用于地址信息的显示和编辑,通过UIHintAttribute特性将此模板名称应用到Contact的Address属性上,然后调用DisplayFor/EditorFor将该属性呈现出来。另一种就是按照类似如如下的方式手工将负责类型属性成员呈现出来。
@model Contact
@Html.DisplayForModel()
<div>@Html.DisplayName("Address")</div>
<div>@(Model.Address.Province + Model.Address.City + Model.Address.District+ Model.Address.Street)</div>
以上就是关于ASP.NET预定义模板介绍,希望对大家的学习有所帮助。
您可能感兴趣的文章: