通过AdditionalMetadata将值从模型传递到视图

时间:2012-10-15 13:41:21

标签: asp.net-mvc attributes data-annotations scaffolding

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

[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以来行为发生了变化?

我需要做任何其他步骤才能将自定义值从模型传递到视图吗?

由于

1 个答案:

答案 0 :(得分:0)

最终管理解决这个问题。最终我不得不打电话给

prop.AdditionalValues["HelpText"])

其中prop是ModelMetadata类型,同时枚举集合:

<% foreach(var prop in ViewData.ModelMetadata.Properties.Where(md => md.ShowForEdit && !ViewData.TemplateInfo.Visited(md))){ %>

不确定为什么他们没有在ViewData.ModelMetadata对象上显示。