找不到“名称”的定义

时间:2011-05-13 14:59:07

标签: c# asp.net class methods

我在命名空间中定义了一个类:

namespace Artworking
{
    public class Category
    {
        int ID {get;set;}
        string Name {get;set;}

        public Category(int ID, string Name)
        {
            this.ID = ID;
            this.Name = Name;
        }
        public Category(int ID)
        {
            using (CrystalCommon.MainContext db = new CrystalCommon.MainContext())
            {
                var q = (from c in db.tblArtworkTemplateCategories where c.ID == ID select c).SingleOrDefault();
                this.ID = q.ID;
                this.Name = q.CatName;
            }
        }
    }
}

在我的内容页面上,我从另一个函数中获取所有类别,并添加一个列表框控件:

        // Category select
        Artworking.Category[] Cats = Artworking.CommonFunctions.FetchAllCategories(Master.LoggedInUser.Client.ID);
        foreach(Artworking.Category C in Cats){
            ListItem NewItem = new ListItem();
            NewItem.Text = C.Name;
            NewItem.Value = C.ID;
            CategorySelect.Items.Add(NewItem);
        }

但是由于某种原因它会抛出NewItem.Text = C.Name行:

  

CS1061:'Artworking.Category'没有   包含'Name'的定义,没有   扩展方法'Name'接受a   类型

的第一个参数

我对这一点感到有点困惑,我认为这些都是正确定义的吗?

  可以找到'Artworking.Category'   (你错过了使用指令或   汇编参考?)

2 个答案:

答案 0 :(得分:6)

您仍然需要在public类内的属性声明之前添加Category

答案 1 :(得分:4)

您的媒体资源Name应标记为public(根据您尝试在课堂外访问它的事实ID一样。)

public class Category
{
    public int ID { get;set; }
    public string Name { get;set; }

    ....
}

另一个小建议 - 为什么不通过Artworking语句引用代码中的using命名空间?它将使您的代码更加整洁,而不必不断地在多行中键入完整的命名空间:

using Artworking;

// Category select
Category[] Cats = CommonFunctions.FetchAllCategories(Master.LoggedInUser.Client.ID);

foreach(Category C in Cats)
{
    ....
}