属性“DisplayColumn”在此声明类型上无效。它仅对“类”声明有效

时间:2010-08-14 10:21:42

标签: asp.net asp.net-mvc data-annotations

只是想知道为什么我得到编译时错误:

  

“属性'DisplayColumn'在此声明类型上无效。它仅对'class'声明有效。”

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;

namespace MyApplication.Models.DataAnnotations
{

    [MetadataType(typeof(AppUser_DataAnnotations))]
    public partial class AppUser
    {

    }

    public class AppUser_DataAnnotations
    {
        [DisplayColumn("Name")]
        public string FirstName { get; set; }
    }
}

我正在使用上面来覆盖mvccontrib渲染的网格列标题。知道为什么我得到编译时错误?任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:4)

对于将来遇到此问题的人来说,这可能有所帮助:

我遇到了与上述相同的问题。如其他答案中所述,使用DisplayName属性并包含System.ComponentModel命名空间很重要。除此之外,属性必须有一个getter(和setter)才能使属性正常工作。错误消息在这一点上有点混乱。

答案 1 :(得分:3)

您遇到编译时错误的原因是[DisplayColumn]属性只能应用于类级别而不能应用于类的属性。您可能会将此属性与[DisplayName]混淆。

答案 2 :(得分:0)

用属性装饰模型属性时,您也可能会遇到此问题。

您需要用ActionFilterAttribute非属性的修饰 Controller方法的