0

在我的 BE 类中,我有某些属性可以与表字段匹配。我想为这些属性中的每一个公开描述性名称。例如将其显示为网格中的列标题。

例如,有一个名为 的属性FirstName。我想将它的描述性名称公开为First Name

为此,我创建了一个对数组作为这个 BE 类的属性。即,myarray("FirstName","First Name") 有没有更好的方法来做到这一点?

4

3 回答 3

3

您可以在模型中执行此操作:

[Display(Name = "First Name")]
public string FirstName { get; set; }

然后在您的视图中,您可以像这样引用标签名称:

@Html.DisplayFor(m=>m.FirstName)
于 2013-01-10T09:30:25.790 回答
3

您可以[DisplayName("First name")]在您的 BE 属性上使用属性。

然后在视图中使用: @Html.LabelFor(m=>m.FirstName)

SO上的类似问题:How to change the display name for LabelFor in razor in mvc3?

编辑

您还可以[Display(Name="First name")]在所有 BE 属性上使用该属性。然后创建一个模板来显示您的 BE(如何在此处创建模板的更多信息:如何为 DisplayFor() 创建 MVC Razor 模板)。

然后在视图中您只需使用:

@Html.DisplayFor(m=>m, "MyModelTemplateName")

于 2013-01-10T09:31:09.387 回答
0

我发现这很有用,这就是我解决它的方法。我发布这个是因为它可能对其他人有用。

在 BE 中定义这个。

[DisplayName("First Name"), Description("First Name of the Member")]
public string FirstName
{
    get { return _firstName; }
    set { _firstName = value; }
}

您可以阅读以下每个属性的详细信息;

PropertyDescriptorCollection propertiesCol = TypeDescriptor.GetProperties(objectBE);

PropertyDescriptor property;

for (int i = 0; i < propertiesCol.Count; i++)
{
    property = TypeDescriptor.GetProperties(objectBE)[i];

    /*
    // Access the Property Name, Display Name and Description as follows
    property.Name          // Returns "FirstName"
    property.DisplayName   // Returns "First Name"
    property.Description   // Returns "First Name of the Member"
    */
}
  • objectBEBE 类的对象实例在哪里。
于 2013-01-11T09:57:06.487 回答