在剃须刀引擎中,我使用LabelFor
了辅助方法来显示名称
但是显示名称似乎不好显示。所以我需要更改我的显示名称怎么做....
@Html.LabelFor(model => model.SomekingStatus, new { @class = "control-label"})
在剃须刀引擎中,我使用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 允许在实体框架类上装饰属性,而无需修改现有类!这是通过将元数据类附加到您的数据库类(实际上是您的 EF 类的横向扩展)来实现的。这允许将属性添加到关联的类而不是类本身,这样在重新生成数据模型时更改不会丢失。
例如,如果你的数据类MyModel
有一个SomekingStatus
属性,你可以这样做:
首先声明一个同名的部分类(并使用相同的命名空间),它允许您添加一个类属性而不被覆盖:
[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")