在我看来,我调用了Html.EditFor(),它触发了这种数据类型的自定义编辑器模板。此外,我通过一些元数据与它(这就是我不喜欢的部分):ModelMetaData:如何获得“父” - 元数据?
<% ModelMetadata metaTitle = ModelMetadataProviders.Current.GetMetadataForProperty(null, Model.GetType(), "Title"); %>
<%: Html.EditorFor(x => Model.Title, new { metaData = metaTitle })%>
传递类型(属性名称)的类型是“翻译”的。在自定义编辑器模板我要读从可视数据传递的元数据,以便使用它:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Translation>" %>
// {...}
if (ViewData["metaData"] != null)
metaData = (ModelMetadata)ViewData["metaData"];
是否有某种方式,我可以直接在自定义编辑模板内访问元数据?不幸的是,如果我叫编辑模板内的以下,我不会得到相同的元数据对象(其中,例如,如果标题 - 物业需要与否的信息丢失):
ModelMetadata metaData = ModelMetadataProviders.Current.GetMetadataForType(null, Model.GetType());
我想要避免在每次调用时传递元数据对象...
Thx for any tipps! sl3dg3
你是对的,那正是我在寻找的 - 最后我可以验证它。 – sl3dg3 2012-05-25 07:40:58
+1 - 尼斯发现...这个API非常强大但不直观。 – 2012-08-19 04:24:49