如何在剃刀在MVC3更改显示名称为LabelFor?(How to change the displ

2019-07-30 14:48发布

在剃刀引擎我用LabelFor辅助方法来显示的名称

但显示名称是似乎并不好显示。 所以我需要改变我的显示名称,该怎么办呢....

@Html.LabelFor(model => model.SomekingStatus, new { @class = "control-label"}) 

Answer 1:

你可以用装饰你的视图模型属性[DisplayName]属性,并指定文本中使用:

[DisplayName("foo bar")]
public string SomekingStatus { get; set; }

或者使用LabelFor帮手,它允许您指定文本的另一个重载:

@Html.LabelFor(model => model.SomekingStatus, "foo bar")

而且,不,你不能在MVC3指定一个类名,你试图这样做,因为LabelFor助手不支持。 然而,这将在MVC4或5工作。



Answer 2:

这是一个老问题,但现有的答案忽视,当你重新生成模型扔掉任何自定义的严重的问题属性。 我增加了更详细的解答,以填补目前可供选择。

你有3种选择:

  • a添加[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这样做的缺点是,你必须重复的标签,每个视图。
  • 第三个选项。 使用连接到数据类(细节如下)的元数据类。

选项3 - 添加元数据类:

微软允许用于装饰上的实体框架类的属性, 而无需修改现有的类 ! 这通过具有连接到您的数据库类(有效的EF类的侧身扩展)元数据类。 这允许属性添加到相关类 ,而不是类本身,所以当你重新生成数据模型的更改不会丢失

例如,如果你的数据类是MyModelSomekingStatus属性,你可以做这样的:

首先声明一个局部类同名的(并且使用相同的命名空间),它允许您添加类属性没有被覆盖:

[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]等),所以你可能需要重复那些在元数据类。
  • 这并不魔法操作,将不只是与任何类的工作。 看起来对于UI装饰属性代码的目的是寻找一个元数据类第一。


Answer 3:

您可以通过装饰用的属性来更改标签的文本DisplayName属性。

[DisplayName("Someking Status")]
public string SomekingStatus { get; set; }

或者,你可以明确地写了原始的HTML:

<label for="SomekingStatus" class="control-label">Someking Status</label>


Answer 4:

装饰用的显示名称属性模型属性。



Answer 5:

@ Html.LabelFor(型号=> model.SomekingStatus, “富栏”)



文章来源: How to change the display name for LabelFor in razor in mvc3?