Asp.net mvc 通过附加元数据将值从模型传递到视图
在我的模型中,我有一个用AdditionalMetadata属性修饰的属性来传递我要呈现的帮助文本: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("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对象上