asp.net-mvc-2 – MVC的DataAnnotationsModelMetadataProvider中
发布时间:2020-12-15 22:40:01 所属栏目:asp.Net 来源:网络整理
导读:它是提供给CreateMetadata方法的参数之一(如果扩展元数据支持,您将覆盖它). ModelMetadata CreateMetadata(IEnumerableAttribute attributes,Type containerType,Funcobject modelAccessor,--THIS ONE Type modelType,string propertyName) 我假设它允许您访
它是提供给CreateMetadata方法的参数之一(如果扩展元数据支持,您将覆盖它).
ModelMetadata CreateMetadata(IEnumerable<Attribute> attributes,Type containerType,Func<object> modelAccessor,<<--THIS ONE Type modelType,string propertyName) 我假设它允许您访问模型对象本身(例如,用于基于模型值设置元数据),但是当我尝试使用它来转换到我的模型对象时,我只是为空. Entity ent = (Entity)modelAccessor(); // = Null 如果我错过了,任何人都可以解释它的目的是什么?或者,如何正确使用它? 谢谢 解决方法
我们最初把它当做“对象模型”,而不是“Func modelAccessor”.我们不得不在MVC 2的船周期之后改变它.
目的是延迟检索模型的实际值,直到你知道你将需要它(即,直到你调用ModelMetadata.Model)为止. 它解决的问题实际上是一个相当深奥的一个相关的模型绑定一个LINQ to SQL类,其中有一个外键引用.问题是,如果您检索到由外键关系表示的子对象(通常意味着该对象的延迟加载),则不再允许通过设置外键来选择新的子对象ID属性.在模型绑定时,建模绑定外键ID(而不是整个外键实体)是很常见的,但是如果我们检索到外键实体对象(为了填充ModelMetadata类),那么该绑定就不再是合法的,实际上是抛出一个例外.由于ModelMetadata用于模型的两个方向 – 通过模型绑定和出站,通过HTML生成 – 我们需要引入间接层,以保护您在两种情况下使用它的能力,而不会中断LINQ to SQL的规则. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- asp.net-mvc – 将默认日期格式应用于ASP.NET MV
- asp.net – 在Microsoft Ajax中伪造__EVENTVALID
- asp.net – AdBlock在.NET 4.5网站上阻止CSS和图
- ASP.NET分页控件
- asp.net – 无法打开与SQL Server的连接
- asp.net-mvc – ASP.NET MVC表单处理未知数量的输
- asp.net – 在cassandra中存储少量数据
- asp.net – File.Exists从网络共享返回false
- 如何在ASP.NET MVC中使用通用处理程序(ASHX)?
- asp.net-mvc – 在ASP.NET MVC站点上集成PayPal的
热点阅读