私は、MetadataType/buddyクラスを使用してMVC3のEntity Frameworkクラスで動作するDisplayName/Display属性を取得することに頭を悩ましました。私の見解では、@ Html.LabelForを使用すると、表示属性ではなくプロパティ名を取得するだけです。私のユースケースとセットアップは非常に単純です:MVC3のMetadataTypeバグ?
[MetadataType(typeof(ProductMetadata))]
public partial class Product
{
}
public class ProductMetadata
{
[Display(Name = "Why does this not work????")]
object ProductName { get; set; }
[Display(Name = "Discontinued Date")]
object DiscontinuedDate { get; set; }
}
私はその後、LabelForのようなHTMLヘルパーを使用している場合:
@Html.LabelFor(m => m.First().ProductName)
私はまだちょうど私の出力にプロパティ名を取得します。私は、カスタムのHTML拡張でプログラムこれを行う場合でも、私はちょうどextected属性値ではなく、プロパティ名を取得:この上
ModelMetadata.FromLambdaExpression(expression, html.ViewData).DisplayName
任意のアイデアやヘルプをいただければ幸いです。私がここに欠けているものはありますか?
MVC3バグではないと言わないでください。これは、誰かがこのようなバグを報告するのに十分長い間野生であった:)さらに、これは単純なusecaseです、それはQAを通過することは決してありません。 –
私はそれが私が行方不明だったと思った。しかし、私は不思議だったプレビュー1のバグだった。面白いことに、何度もそのコードを見ても、プロパティのアクセスレベルが設定されていないことに気がつきませんでした。 – long2know