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にブレークポイントを設定すると、正しいフィールドでブレークして属性が確実に設定されていても、常に空になります。MVC3以降の動作が変更された場合に備えて、MVC4を使用していますか?

カスタムベールをモデルからビューに渡すために他に必要な手順はありますか?

ありがとう

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 に答える