を使用するときにテキストを指定する方法については、だれでも思いついたHtml.LabelFor(c=>c.MyField)
。それはちょうどだMyField
、あなたが代わりに「スーパーファンタスティック・フィールド」を望むことが画面上の表示に適切な名前ではないかもしれませんが、任意のオーバーロードがあるように表示されません。
何か案は?
回答:
あなたが使用するSystem.ComponentModel.DataAnnotations.DisplayAttribute
:
[Display(Name = "My Field")]
public string MyField { get; set; }
ResourceType
属性にプロパティを設定すると、リソースファイルを使用できるようになります。
(.NET 4より前System.ComponentModel.DisplayNameAttribute
は、表示名はコンパイル時定数でなければならないという警告がありました。)
Error 381 An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type
ます。したがって、このソリューションはl18nには悪いようです。
System.ComponentModel.DataAnnotations.DisplayAttribute
リソースファイルの使用を許可するnew-in-.NET-4を反映するように回答を更新しました。まだ4 / 4.5を使用していない場合は、古いものSystem.ComponentModel.DisplayNameAttribute
を次のように拡張できます:stackoverflow.com/a/2432520/33533
MVC 3には新しいオーバーロードがあるため、ヘルパーのラベルのカスタムテストを指定できるはずです。
まだv2をダウンロードしていないので、テストできませんが、DynamicDataのように機能すると思います。その場合は、モデルで次のようにします。
[Display(Name = "The Super Fantastic Field")]
public string MyField {get;set;}
2つの方法があります
1 "直接注釈"
2 "リソースを使用した
注釈"直接注釈
[Display(Name = "My Field")]
public string MyField { get; set; }
リソース付きのAnnotatinos
[Display(Name = "My_Field",ResourceType = typeof(Resource))]
public string MyField { get; set; }
2番目の方法では、おそらくResource.resxという名前のリソースファイルに値を追加する必要があります 。
目的に合ったものをお使いください。
私はまだCP1をチェックアウトしていませんが、スコットのリリースを読み、コードがT4によって生成されたことを思い出しているようです。いつでも変更できると思いますが、CP2でオーバーロードが発生するのではないかと思います。
編集:ソースは常に利用可能であるため、メソッドを変更し、T4ジェネレーターを変更するだけで、準備は完了です。また、そのmodのチケットまたはリクエストを(どういうわけか)入れて、次のバージョンで機能するようにします。
using System.ComponentModel;
しかし持っている必要があります。