0

在我的模型中,我有一个用 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 以来行为发生变化?

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

谢谢

4

1 回答 1

0

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

prop.AdditionalValues["HelpText"])

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

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

不知道为什么它们没有显示在 ViewData.ModelMetadata 对象上。

于 2012-10-25T12:19:22.357 回答