2011-09-21 2 views
1

다음과 같은 클래스 모델이 있습니다.ObjectDataSource -로드 메소드가 엔티티와 다른 클래스에있을 수 있습니까?

public class Person 
{ 
    public string Name; 
    public int Age; 
} 

public class PersonService 
{ 
    public List<Person> GetAll() {...} 
} 

ObjectDataSource (ODS)를 GridView에 바인딩하여 ASP.Net 웹 페이지에 데이터를 표시하고 있습니다.

'ODS.TypeName = PersonService'를 가리키면 "Object does not match target type."이 나타납니다. 데이터를로드하는 중 오류가 발생했습니다.

'ODS.TypeName = Person'을 가리킨 경우 데이터를로드하는 GetAll() 메서드를 찾을 수 없습니다.

ODS를이 모델에 바인딩 할 수 있습니까 (즉, 메소드와 유형에 대한 별도의 클래스)?

편집 : 두 번 확인했습니다 유형 및 선택 메서드 이름이 올바른지 (및 정규화 된). 위의 모델로 ODS가 작동한다는 것을 증명하기 위해 별도의 빠른 테스트 프로젝트를 만들었습니다. 유일한 차이점은 깨진 프로젝트가 EF 4.1에 정의 된 개체를 사용하고 있다는 것입니다. 문제가 발생할 수 있습니까?

답변

0

Person 개체 목록을 노출하는 PersonList 클래스를 만들고 PersonService 메서드를 사용하여 목록을 채우거나 반환하는 메서드가있는 것으로 생각합니다.

2

TypeName은 예를 들어 PersonService으로 설정해야합니다. ASP.NET 데이터 바인딩이나 ODS/그리드가 실제로 신경을 쓰지 않으므로 ODS에 그리드 행에 바인딩 된 정확한 유형의 개체 (예제에서는 Person)를 제공 할 필요가 없습니다. 오류와 관련하여 서비스를 예를 들어 My.Namespace.PersonService과 같이 정규화하고 그에 따라 ODS에 SelectMethod을 설정해야합니다.

0

enter image description here

프로젝트에

그냥 마우스 오른쪽 버튼으로 클릭하고 선택이 작동 "경량 솔루션로드 사용 안 함". 다른 문제가 없습니다