Asp.net mvc 通过附加元数据将值从模型传递到视图

Asp.net mvc 通过附加元数据将值从模型传递到视图,asp.net-mvc,attributes,data-annotations,scaffolding,Asp.net Mvc,Attributes,Data Annotations,Scaffolding,在我的模型中,我有一个用AdditionalMetadata属性修饰的属性来传递我要呈现的帮助文本: [AdditionalMetadata("HelpText", "help text goes here")] 在我的EditorTemplate(/views/shared/editorTemplates/Object.ascx)中,我检查是否设置了此值: <% if (ViewData.ModelMetadata.AdditionalValues.ContainsKey("HelpT

在我的模型中,我有一个用AdditionalMetadata属性修饰的属性来传递我要呈现的帮助文本:

[AdditionalMetadata("HelpText", "help text goes here")]
在我的EditorTemplate(/views/shared/editorTemplates/Object.ascx)中,我检查是否设置了此值:

<% if (ViewData.ModelMetadata.AdditionalValues.ContainsKey("HelpText"))
{ %>
  <span class='editor-help'>
    <%= ViewData.ModelMetadata.AdditionalValues["HelpText"].ToString()%>
  </span>
<% } %>

但是,当我在ViewData.ModelMetadata.AdditionalValues上放置断点时,它始终为空,即使我在正确的字段上断开,并且该属性已明确设置。我正在使用MVC4,以防行为在MVC3之后发生变化

要将自定义值从模型传递到视图,是否还需要执行其他步骤


谢谢

终于解决了这个问题。最后我不得不打电话

prop.AdditionalValues["HelpText"])
其中,prop的类型为ModelMetadata,枚举集合时:

<% foreach(var prop in ViewData.ModelMetadata.Properties.Where(md => md.ShowForEdit && !ViewData.TemplateInfo.Visited(md))){ %>
md.ShowForEdit&&!ViewData.TemplateInfo.Visited(md)){%>
但不确定为什么它们没有显示在ViewData.ModelMetadata对象上