十七、使用模型元数据的注解属性来引导模板辅助器精确地生成HTML元素
自己备注:这将和code first在Model中用于生成数据表的注解属性(比如Key、StringLength、Inquire等)混合在一起。
具体的注解属性有:
[HiddenInput] //把一个字段(如ID)标记为只读
[HiddenInput(DisplayValue=false)] //把一个字段(如ID)标记为隐藏
[ScaffoldColumn(false)] //用支架辅助器生成时排除该属性
[Display(Name="出生日期")] //指定属性标签要显示的内容
[DisplayName("订单详情")] //与Display的区别是,它用于模型类。DisplayName注解属性也可用于模型属性,但我们倾向于把这个注解属性只用于模型类。
[DataType(DataType.Date)] //用于指定模型属性为具体类型(这个和code first的注解属性一致)。
[UIHint("MultilineText")] //针对一个属性指定一个视图模板(Boolean、Collection、Decimal、EmailAddress、HiddenInput、Html、MultilineText、Object、Password、String、Text、Url)
[MetadataType(typeof(PersonMetadataSource))] //用于把一个伙伴类与当前类关联在一起(用于partial分部类)
十八、Object视图模板与使用复合属性
模板的制模过程依赖于我们前面描述的Object模板。该制模过程会检测模型的每一个属性,并为每个属性选择一个模板来渲染其HTML,以表现该属性及其数据值。
Object模板只针对简单类型操作,这种策略导致的结果就是,“支架套件”生成HTML辅助器时是非递归的。
给定一个要处理的对象,支架模板视图辅助器(即“支架套件”)将只生成简单属性类型的HTML,而会忽略本身是复合对象的任何属性。
因此,要渲染一个复合属性的HTML,我们必须明确地处理复合类属性,如:
@Html.EditorForModel()
@Html.EditorFor(m=>m.HomeAddress)
十九、WebApi模型
http://www.cnblogs.com/r01cn/archive/2012/11/11/2764627.html
模型是表示应用程序数据的一种对象。ASP.NET Web API可以自动地把模型序列化成JSON、XML、或某些其它格式,然后这些序列化数据写到HTTP响应的消息体中。只要一个客户端能够读取这种序列化格式,它就可以对这种对象进行反序列化。大多数客户端都能够解析XML或JSON。另一方面,通过设置HTTP请求消息中的Accept报头,客户端能够指示它所希望的是哪一种格式。
二十、navigation properties的virtua修饰符
导航属性加virtual修饰,为的是Entity Framework Code First的延迟加载功能(懒加载)。当然Entity Framework Code First延迟加载并不是必须的,所以virtual修饰符也可以不加。