如何在mvc3中更改RAZOR中LabelFor的显示名称?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (65)

在RAZOR引擎中,我使用了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帮助器不支持它。

用户回答回答于

你有3个选项:

  • 将一个[DisplayName("Name goes here")]属性添加到数据模型类。缺点是,只要重新生成数据模型,就会抛弃它。
  • 给你的字符串添加一个参数Html.LabelFor。例如@Html.LabelFor(model => model.SomekingStatus, "My New Label", new { @class = "control-label"})
  • us/library/system.web.mvc.html.labelextensions.labelfor( v= vs.118).aspx这个缺点是你必须重复标签在每一个角度。

选项3 - 添加元数据类:

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;
}

所属标签

可能回答问题的人

  • 人生的旅途

    10 粉丝484 提问6 回答
  • 无聊至极

    4 粉丝504 提问6 回答
  • 富有想象力的人

    4 粉丝0 提问4 回答
  • 找虫虫

    2 粉丝0 提问4 回答

扫码关注云+社区

领取腾讯云代金券