在剃须刀引擎中,我使用了LabelFor
辅助方法来显示名称
但是显示名称似乎不好显示。所以我需要更改显示名称的方式...
@Html.LabelFor(model => model.SomekingStatus, new { @class = "control-label"})
Answers:
您可以使用[DisplayName]
属性装饰视图模型属性,并指定要使用的文本:
[DisplayName("foo bar")]
public string SomekingStatus { get; set; }
或使用LabelFor帮助程序的另一个重载,该重载允许您指定文本:
@Html.LabelFor(model => model.SomekingStatus, "foo bar")
而且,不,您不能像尝试那样在MVC3中指定类名,因为LabelFor
帮助程序不支持该类名。但是,这将在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/zh-cn/library/system.web.mvc.html.labelextensions.labelfor( v= vs.118) .aspx的缺点是您必须重复标签在每个视图中。Microsoft允许修饰Entity Framework类上的属性,而无需修改现有类!这是通过将元数据类附加到数据库类(实际上是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;
}
参考: https : //msdn.microsoft.com/zh-cn/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>