- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
modelAccessor"参数是什么?-6ren"> modelAccessor"参数是什么?-它是提供给 CreateMetadata 方法的参数之一(如果扩展元数据支持,则需要覆盖该方法)。 ModelMetadata CreateMetadata(IEnumerable attribute-6ren">
它是提供给 CreateMetadata 方法的参数之一(如果扩展元数据支持,则需要覆盖该方法)。
ModelMetadata CreateMetadata(IEnumerable<Attribute> attributes,
Type containerType,
Func<object> modelAccessor, <<--THIS ONE
Type modelType,
string propertyName)
我假设它允许您访问模型对象本身(例如,用于根据模型值设置元数据),但是当我尝试使用它来转换为我的模型对象时,我只是得到 null。
Entity ent = (Entity)modelAccessor(); // = Null
如果我误解了,谁能解释一下它的目的是什么?或者说,如何正确使用它?
谢谢
最佳答案
我们最初将其视为“对象模型”,而不是“Func modelAccessor”。我们必须在 MVC 2 发布周期的后期更改它。
目的是延迟检索模型的实际值,直到您知道需要它为止(即,直到您调用 ModelMetadata.Model)。
它解决的问题实际上是一个相当深奥的问题,与针对其中具有外键引用的 LINQ to SQL 类的模型绑定(bind)相关。问题是,如果您检索了由外键关系表示的子对象(这通常意味着该对象的延迟加载),则不再允许您通过设置外键来选择新的子对象身份证属性。在模型绑定(bind)时模型绑定(bind)外键 ID(而不是整个外键实体)是很常见的,但是如果我们检索了外键实体对象(为了填充 ModelMetadata 类),那么该绑定(bind)将不再是合法的,并且实际上抛出异常。由于 ModelMetadata 用于模型的两个方向 - 入站(通过模型绑定(bind))和出站(通过 HTML 生成) - 我们需要引入间接层来保护您在这两种情况下使用它的能力,而不会破坏 LINQ to SQL 的规则。
关于asp.net-mvc-2 - MVC 的 DataAnnotationsModelMetadataProvider 中的 "Func<object> modelAccessor"参数是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3412392/
它是提供给 CreateMetadata 方法的参数之一(如果扩展元数据支持,则需要覆盖该方法)。 ModelMetadata CreateMetadata(IEnumerable attribute
我是一名优秀的程序员,十分优秀!