かみそりエンジンでは、LabelFor
ヘルパーメソッドを使用して名前を表示しました
しかし、表示名は表示するのが良くないようです。だから私はそれを行うには表示名を変更する必要があります....
@Html.LabelFor(model => model.SomekingStatus, new { @class = "control-label"})
[DisplayName]
属性を使用してビューモデルプロパティを修飾し、使用するテキストを指定できます。
[DisplayName("foo bar")]
public string SomekingStatus { get; set; }
または、テキストを指定できるLabelForヘルパーの別のオーバーロードを使用します。
@Html.LabelFor(model => model.SomekingStatus, "foo bar")
そして、いいえ、あなたがしようとしてMVC3でクラス名を指定することはできません。LabelFor
ヘルパーはそれをサポートしていないからです。ただし、これはMVC4または5で機能します。
これは古い質問でしたが、既存の回答では、モデルを再生成するときにカスタム属性を破棄するという深刻な問題を無視しています。現在利用可能なオプションをカバーするために、より詳細な回答を追加しています。
[DisplayName("Name goes here")]
属性をデータモデルクラスに追加します。欠点は、データモデルを再生成するたびにこれが破棄されることです。Html.LabelFor
に文字列パラメーターを追加します。例えば@Html.LabelFor(model => model.SomekingStatus, "My New Label", new { @class = "control-label"})
リファレンス: https://msdn.Microsoft.com/en-us/library/system.web.mvc.html.labelextensions.labelfor(v = vs.118).aspx これの欠点は、すべてのビューでラベルを繰り返す必要があることです。Microsoftは、Entity Frameworkクラスのプロパティを装飾することを許可しています既存のクラスを変更せずに!これは、データベースクラスにアタッチするメタデータクラスを持つことにより(事実上、EFクラスの横方向の拡張)。これにより、属性を関連クラスに追加でき、クラス自体には追加できませんデータモデルを再生成しても変更は失われません。
たとえば、データクラスがMyModel
プロパティを持つSomekingStatus
である場合、次のようにできます。
最初に、同じ名前の partial class を宣言し(同じ名前空間を使用)、オーバーライドせずにクラス属性を追加できます。
[MetadataType(typeof(MyModelMetaData))]
public partial class MyModel
{
}
生成されたデータモデルクラスはすべて部分クラスであり、同じ名前のクラスを作成するだけで追加のプロパティとメソッドを追加できます(これは非常に便利で、たとえばモデル内の他のフィールドタイプの書式設定された文字列バージョンを提供するために使用します)。
ステップ2:新しい部分クラスによって参照されるメタデータクラスを追加します。
public class MyModelMetaData
{
// Apply DisplayNameAttribute (or any other attributes)
[DisplayName("My New Label")]
public string SomekingStatus;
}
[required]
など)の既存の属性が無視される可能性があるため、メタデータクラスの属性を複製する必要があります。DisplayName
属性でプロパティを装飾することにより、ラベルのテキストを変更できます。
[DisplayName("Someking Status")]
public string SomekingStatus { get; set; }
または、生のHTMLを明示的に記述することもできます。
<label for="SomekingStatus" class="control-label">Someking Status</label>
モデルプロパティをDisplayName属性で装飾します。
@ Html.LabelFor(model => model.SomekingStatus、 "foo bar")