2010-08-24 6 views
2

Я использую ListView вместе с объектом ObjectDataSource, привязанным к бизнес-объекту. Этот объект определяется следующим образом:Данные DataKeyNames в элементах управления данными должны быть свойством?

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

При попытке установки свойства DataKeyNames в ListView к Id, ASP.net взрывается и говорит:

DataBinding: «Сотрудник» не содержит свойство с именем «Id».

Однако, когда я изменить объект, который:

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

Он работает !!!

Не удалось найти документацию на эту страницу. Почему он не принимает простую переменную для DataKeyNames и вместо этого настаивает на свойстве?

ответ

1

Это не очень длинное объяснение этого, вы его уже нашли. ASP.Net может связываться с свойствами, а не с общедоступными переменными. Вероятно, это связано с тем, как создается MSIL. При компиляции свойство генерируется как метод (а привязка позволяет привязываться к методам и свойствам), в то время как общедоступные переменные - нет.

К сожалению, быстрый поиск не выявил рассуждение за пределами моей догадки выше, но здесь MS говоря «свойство, выражение, методы» также: http://support.microsoft.com/kb/307860

+3

Спасибо за подтверждение моей мысли. Я думаю, что странно предотвращать использование переменных как DataKeyNames, но это мир Microsoft. – md1337

Смежные вопросы