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