2012-11-22 5 views
-1

나는 학습 C# 및 asp.net의 일부로 두 개의 테이블을 가지고 있습니다. 고객 및 주문과 내 POCO의 1 : m 관계.고객 인스턴스에서 Orders 속성에 액세스하는 방법은 무엇입니까?

public class Customer 
{ 
public int CustID {get; set;} 
public string FirstName {get; set;} 
public string LastName {get; set;} 
public List<Orders> orders {get; set;} 
} 

public class Orders 
{ 
public int OrdersID {get; set;} 
public int CustID {get; set;} 
public string OrderName {get; set;} 
public virtual Customer customer {get; set;} 
} 

이제 내 질문은 고객 인스턴스 하지 주문 인스턴스에서 하나 개의보기에서 모두 고객 및 주문 목록을 표시 할 방법이다.

내가 내 컨트롤러에있는 것입니다 :

@model List<MvcApplication3.Models.Customer> 
@foreach(var customer in Model) { 
    <div>Display customer props:</div> 
    @Html.DisplayFor(m => customer.LastName) 

    <div>Display Orders: 
     **@foreach(var order in customer.Orders)** { 
      <div>Display some order props: 
       @Html.DisplayFor(m => order.OrderName) 
      </div> 
     } 
    </div> 
} 

I가 의도 :

namespace MvcApplication3.Models 
{ 
    public class coContext : DbContext 
    { 
     public DbSet<Customer> customers { get; set; } 
     public DbSet<Orders> orders { get; set; } 

    } 
} 

내 부분보기 아래의 코드가 내 DbContext에 대한

namespace MvcApplication3.Controllers 
{ 
    public class janController : Controller 
    { 
     private coContext db = new coContext(); 

    public ViewResult Index() 
     { 

     return View(db.customer.ToList()); 
    } 

코드 내 고객 insatnce의 하위 속성 또는 데이터를 봅니다. 간단히 말해 나는 고객, 즉 FirstName Last Name (고객은 고유해야 함)을 기반으로 관련 데이터를 읽고 그 다음에 관련 데이터 (OrderName)를 원합니다. 그게 내가 뭘하려고하는지.

+0

데이터베이스에서 주문을 검색에 대한 질문인가를? 또는 뷰에 하위 컬렉션을 표시하는 것에 대한 질문입니까? – Jan

+0

@ Jan 감사 Jan.보기에서 자식 컬렉션을 표시하는 방법. – Sithelo

+0

그래서 지금까지의 내 모습을 보여 주어야합니다. – Jan

답변

0

나는 아직도 확실하지 않다. 당신의 질문은 정확히 뭐지 만, 나는 대답하려고 노력한다. 귀하의 의견을 읽으 셨습니다. 알고 계시고, 관련 데이터를보기에 표시하는 방법을 알고 계십니다.

@model List<Customer> 

@foreach(var customer in Model) { 
    <div>Display customer props:</div> 
    @Html.DisplayFor(m => customer.LastName) 

    <div>Display Orders: 
     @foreach(var order in customer.Orders) { 
      <div>Display some order props: 
       @Html.DisplayFor(m => order.OrderName) 
      </div> 
     } 
    </div> 
} 

이 정보는 찾고 계신 정보입니다.

편집

나는 당신의 프로젝트를 살펴했다있다. 보기에이 코드가 있습니다.

문제는 첫 번째 foreach 루프 내에 두 번째 foreach 루프를 포함해야하는 첫 번째 foreach 루프를 닫아야한다는 것입니다. 그 이유는 변수 customer이 두 번째 루프에 알려지지 않은 이유입니다. 당신이 잊고 될 수 있습니다 뭔가 사실이다 -

http://coding-in.net/asp-net-mvc-3-how-to-use-editortemplates/

1 :

@foreach(var customer in Model) { 
    @Html.DisplayFor(m => customer.LastName) 

    @foreach(var order in customer.orders) { 
     <div>Display some order props: 
      @Html.DisplayFor(m => order.OrderName) 
     </div> 
    } 
} 
+0

여기에 문제가있다. ** @ foreach (고객 주문. 주문) **. 내 프로젝트 [여기] (https://skydrive.live.com/redir?resid=F6CEA54D10B37C92!117) – Sithelo

+0

** 갖고있는 문제는 무엇입니까? – Jan

+0

고객 이름이 현재 컨텍스트에 존재하지 않는다고 말합니다. 내 예에서는 – Sithelo

1

내가 대답으로 내 "의견"을 작성 모두 함께 결정 : 그것은이처럼되고있다 게으른 로딩 사용 여부 ..... EF4.X/5.X CodeFirst를 사용하는지 여부에 따라 다음과 같이해야 할 수도 있습니다.

var res = db.Customers.where(x=>x.Deleted != null).include(x=>x.Orders).toList(); 

그렇지 않으면

2 Sithelo> @emanyalpsid 감사 Emanyalpsid (당신은 모든 "아이"속성을로드하지 않는 경우 "당신이보기에 다음 표시 할 수 없습니다). 내보기에서 하위 속성을로드하는 방법 나는이 Html.DisplayFo (modelItem => item.orders.OrderName)를 시도했으나 그렇게 해 주었다.

당신은 다른 사람과 같은 1 월 솔루션, 또는 무언가와 같은 다른 방법으로 사용할 수 있습니다 : MVC의 editortemplates : http://coding-in.net/asp-net-mvc-3-how-to-use-editortemplates/

+0

주셔서 감사합니다 게시물과 링크 그 사람의 주소가 이미 하드 코딩 된 것을 나는 알아 차린다. 내 것이 아니다. 데이터베이스에서 검색해야하고 orders 클래스에는 고객 클래스와 연관시킬 외래 키가 있습니다. 그래도 필자가 제공 한 예제와 같이 하나의보기에서 사람과 주소를 모두 볼 수 있지만 데이터베이스에서 데이터를 검색하는 방법을 알아야합니다. – Sithelo

+0

코드와 누락 된 코드에 대해 자세히 알려주십시오. 왜냐하면이 시점에서 나는 약간의 질문에 잃어버린 ..... – Dryadwoods

+0

나는이 [link] (https://skydrive.live.com/redir?resid=F6CEA54D10B37C92)에서 샘플 코드를 확인하시기 바랍니다. 117). – Sithelo

관련 문제