代码之家  ›  专栏  ›  技术社区  ›  md1337

数据绑定控件中的DataKeyNames必须是属性吗?

  •  2
  • md1337  · 技术社区  · 14 年前

    我使用ListView和绑定到业务对象的ObjectDatasource。此对象定义如下:

    public class Employee
    {
        public int Id;
        public string Name;
    }
    

    当我尝试将ListView的DataKeyNames属性设置为ID时,ASP.NET会爆炸并说:

    数据绑定:“Employee”不包含名为“ID”的属性。

    但是,当我将对象更改为该对象时:

    public class Employee
    {
        public int Id {get; set;}
        public string Name;
    }
    

    它起作用了!!!!

    我找不到关于这种行为的任何文档。为什么它不接受DataKeyNames的简单变量,而是坚持属性?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Tarwn    14 年前

    这件事没什么好解释的,你已经找到了。ASP.NET可以绑定到属性而不是公共变量。这可能与生成msil的方式有关。编译时,将生成一个属性作为方法(绑定允许您绑定到方法和属性),而公共变量则不是。

    不幸的是,一个快速搜索没有发现超出我自己的猜测以上的推理,但这里是微软说“属性,表达式,方法”也: http://support.microsoft.com/kb/307860