2012-10-30 3 views
0

webforms 프로젝트가 있고 ASP.NET 4.5에서 새 모델 바인딩을 사용하고 있습니다. 나는 사용자가 관련된 엔티티를 선택할 수있는 DropDownList를 포함하는 내 페이지에 강력하게 형식화 된 FormView를 가지고 있습니다 (Product -> Category 생각).Webforms 모델 바인딩 및 복합 형식

내 InsertMethod에서 관련된 엔터티 (예 : Product.Category)에 직접 액세스 할 수 있도록 설정하는 방법이 있습니까? 관련 엔터티에 대한 유효성 검사 규칙을 확인해야하며 해당 작업의 유일한 방법은 DropDownList를 설정하여 관련 레코드의 ID를 반환 한 다음 데이터베이스에서 가져 오는 것입니다. 그건 다소 비효율적 인 것 같습니다.

편집 : 저주, 아무도 허!? 글쎄, 그것은 당신이 새로운 기술을 얼리 어답터로 삼아 얻은 것입니다! : D

답변

0

MVC에서 동일한 문제가 발생했습니다. 가장 좋은 해결책은 내 모델에서 ForeignKey 데이터 주석을 사용하는 것이 었습니다. 이렇게하면 관련 객체의 ID 만 삽입하고 나중에 객체를 검색 할 수있었습니다. 다음은 예입니다 :

<asp:DropDownList ID="CategoryId" SelectMethod="GetCategories" runat="server" /> 

: 이제

public class Product { 
    public int ProductId { get; set; } 
    public string Name { get; set; } 
    // Add this field so I can add the entity to the database using 
    // category id only, no need to instantiate the object 
    public int CategoryId { get; set; } 

    // Map this reference to the field above using the ForeignKey annotation 
    [ForeignKey("CategoryId")] 
    public virtual Category Category { get; set; } 
} 

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

, 내가 정말, 드롭 다운리스트에이 같은 아마 뭔가를 범주 목록을 바인딩하는 방법을 모르는, 그래서 내가 지난 웹폼을 사용하기 때문에 나이이었다 그리고 아마도 Create 또는 Update 메소드로 제품을 다시 가져올 때, CategoryId 속성이 적절하게 지정되었으므로 EF의 컨텍스트를 저장하면됩니다. 행운을 빕니다.