2011-03-24 4 views
0

다음과 같은 SQL 데이터베이스가 있습니다 : 고객, 아이템, 의류 및 식품.ASP.Net MVC보기가 반환되었지만 추가 정보를 표시하려면 어떻게해야합니까?

품목에는 의류 또는 음식의 열쇠가 있습니다. 항목에는 고객에게도 열쇠가 있습니다. 따라서 고객은 식품 또는 의류 일 수있는 품목을 보유 할 수 있습니다.

저는 ADO.Net Entity Framework를 사용 중이며 자동으로 생성됩니다.

현재 다음과 같은 설정이 있습니다. 사용자가 웹 페이지에 ID를 입력 할 수 있으며이 ID는 컨트롤러가 집어 들고 LINQ를 사용하여 데이터베이스를 쿼리하는 양식 게시물을 통해 고객에게 전달됩니다. 그런 다음 고객보기 (세부 사항)가 리턴됩니다. 이제 모든 고객 세부 정보를 볼 수 있습니다.

그러나 내가 원하는 것은 고객이 가지고있는 품목, 다양한 식품 품목 및 의류 품목을 볼 수 있도록하는 것이지만이를 수행하는 방법은 확실하지 않습니다. 나는 또한 사용자가 옷과 음식 아이템 테이블의 한 필드를 편집 할 수 있도록하고 싶다. 어떤 생각을 어떻게 구현할 수 있을까요? 나는 또한 내가 고객 (자신의 항목)보기에 표시 할 엔티티 인 cust.Items를 작성할 수

 public ActionResult Details(int id) 
    { 
     var cust = (from c in dataModel.Customers 
        where (c.MembershipID == id) 
        select c).First(); 
     return View(cust); 
    } 

: 여기

내 CustomerController의 ActionResult입니다. 이 뷰에 어떻게 표시합니까?

이 내용을 통해 내가 성취하려는 방법과 방법에 대해 좀 더 분명히 알 수 있습니다.

감사합니다.

답변

0

Entity Framework를 사용하면 테이블이 올바른 외부 키와 함께 제대로 연결되어 있으면 Customer 엔터티에 Items 컬렉션 인 속성이 있어야합니다.

고객 용 필드가있는 강력한 형식의 ViewModel을 작성하고 의류 및 식품에 대한 사용자 고유의 특성을 구현 한 후 다른 쿼리로 채울 수도 있습니다.

이 질문은 지난 밤에 물어 보았지만 비슷합니다. 질문에있는 사람은 정보가 전달 된 드롭 다운을 채우기를 원했습니다. 드롭 다운이 아닌 텍스트 상자를 채우기 위해 비슷한 것을 원합니다. How to properly populate drop downs from ViewData in controller on multiple views in ASP.NET MVC

새 클래스를 작성하여 ViewModel을 작성하려면 먼저 CustomerAndItemsViewModel이라는 이름을 지정하십시오.

public class CustomerAndItemsViewModel 
{ 
    public Customer Customer { get; set; } 
    public IQueryable<Items> Items { get; set; }   
} 


public ActionResult Details(int id) 
{ 
    var cust = (from c in dataModel.Customers 
       where (c.MembershipID == id) 
       select c).First(); 
    var items = (from i in dataModel.Items 
       where (i.MembershipID == cust.MembershipID) 
       select i; 
    return View(new CustomerAndItemsViewModel { Customer = cust, Items = items }); 
} 

더 이상 고객을 귀하의 견해에 넘어 가지 않을 것임을 잊지 마십시오.따라서 상단의 행을 다음과 같이 변경해야합니다.

@model Your.Path.To.CustomerAndItemsViewModel 
+0

자동으로 항목에 연결되는 EF에 대한 좋은 지적입니다. 나는 그가 연결되지 않은 정보를 얻으려고했다고 가정하고있었습니다. 고맙습니다. – JasCav

+0

테이블이 적절한 키로 설정되지 않았다면 링크되지 않을 수 있습니다. 그래서 내가 제안한 것처럼 사용자 정의보기 모델 생성에 관한 질문을 연결했습니다. – Pete

+0

안녕하세요, 내보기로 갈 때 나는 다음과 같은 : Model.Libraryitems는 엔터티 컬렉션 형식입니다. 필요한 데이터를 표시하려면 어떻게해야합니까? (나는 이것이 당신이 링크로 말한 것이라고 가정하고 있단 말인가?) 고마워. –

0

일반적으로 엔티티 중 하나에 포함되지 않은 정보를 다시 전달하려면 둘 이상의 개체를 포함하는 클래스를 만들어야합니다. 따라서 고객 정보와 모든 항목 (편집 할 수있는)을 표시하는 페이지를 원할 경우 컨트롤러 조치에서 "CustomerAndItems"객체 (또는 이와 유사한 이름의 객체)를 다시 전달해야합니다. 이 개체는 고객에 대한 참조와 해당 항목의 컬렉션을 보유합니다. (액션 내에서 CustomerAndItems 개체를 작성하십시오.)

그러면 CustomerAndItems에 대한보기가 강력하게 입력되므로 일반 정보처럼 각 정보를 표시 할 수 있습니다.

관련 문제