Asp.net MVC元数据的解析和呈现

Model元数据是对数据类型本身和其属性成员的描述,元数据具有递归性(如果数据是复杂类型,那么对应元数据的Properties描述其属性的属性)。
目的:Model的Html呈现,Model绑定,Model验证。
1236909-20180819185154669-290060142.png

ModelMetadata定制

Html根据ModelMetadata数据的属性呈现,在创建ModelMetadata对象根据反射读取属性的值修改ModelMetadata对象属性。

定制特性属性作用
UIHintAttributeTemplateHint模板名
HiddenInputAttributeHideSurroundingHtml是否显示标题
ScaffoldColumnAttributeShowForDisplay ShowForEdit是否显示在html
DataTypeAttribute DisplayFormatAttributeDataType DisplayFormat数据显示样式

IMetadataAware接口,实现接口可在创建ModelMetadata时,修改ModelMetadata的属性。可以通过实现接口自定义元数据。

数据模板

根据元数据选择模板,模板的默认路径为:~/Views/Shared或~/Views/{ControllerName}。系统存在预定义模板

预定于模板html
EmailAddress超链接到mailto

用户可自定义模板,在默认路径创建模板。

自定义HtmlHelper

通过扩展类型HtmlHelper,可自定义标签生成html。

public static string TestHtml(this HtmlHelper htmlHelper, string value)
{
    return String.Format("<div>{0}</div>", value);
}

Model元数据的提供

ModelMetadata的数据的来源?通过实现ModelMetadataProvider抽象类。
1236909-20180819185230922-1696448156.png

用户可以通过自定义ModelMetadataProviders.Current,注册元数据提供Provider

转载于:https://www.cnblogs.com/LoveTomato/p/9502167.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值