首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ModelMetaData:如何获取"Parent"-Metadata?

ModelMetaData:如何获取"Parent"-Metadata?
EN

Stack Overflow用户
提问于 2011-02-23 17:33:52
回答 3查看 3.5K关注 0票数 3

在我的视图中,我调用了Html.EditFor(),它触发了此数据类型的自定义编辑器模板。此外,我还传递了一些元数据(这是我不喜欢的部分):

代码语言:javascript
复制
<% ModelMetadata metaTitle = ModelMetadataProviders.Current.GetMetadataForProperty(null, Model.GetType(), "Title"); %>
<%: Html.EditorFor(x => Model.Title, new { metaData = metaTitle })%>

传递的类型(属性标题)是'Translation‘类型。在自定义编辑器模板中,我必须从viewData读取传递的元数据才能使用它:

代码语言:javascript
复制
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Translation>" %>
// {...}
if (ViewData["metaData"] != null)
    metaData = (ModelMetadata)ViewData["metaData"];

有没有什么方法可以在自定义编辑器-模板中直接访问元数据?不幸的是,如果我在editor-template中调用以下代码,我将不会得到相同的metadata-object (例如,如果Title-Property是必需的或不是必需的,则缺少该信息):

代码语言:javascript
复制
ModelMetadata metaData = ModelMetadataProviders.Current.GetMetadataForType(null, Model.GetType());

我希望避免在每次调用时都传递元数据对象...

谢谢你给任何小费!sl3dg3

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-28 02:56:07

我认为您正在尝试获取EditorTemplate的实际属性的元数据。

您可以这样做(在EditorTemplate中):

代码语言:javascript
复制
var metadata = ModelMetadata.FromStringExpression("", ViewData);

"“表示MVC的当前属性。

票数 7
EN

Stack Overflow用户

发布于 2011-02-23 17:55:15

您可以尝试执行以下操作来访问父元数据:

代码语言:javascript
复制
<%
    var parentType = this.ViewData.ModelMetadata.ContainerType;
    var metadata = ModelMetadataProviders.Current.GetMetadataForType(null, parentType);
%>
票数 5
EN

Stack Overflow用户

发布于 2012-12-15 03:00:07

无可否认,这有点晚了,但是有一种更简单的方法可以获取当前模型的模型元数据-它以property of ViewData的形式存在

代码语言:javascript
复制
var metadata = ViewData.ModelMetadata;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5089086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档