2016-07-15 2 views
-1

나는 좌절감을 느낍니다. 하나의 모델에서 다른 모델의 뷰로 필드를 표시하려고하는 일련의 표가 있습니다. 이것은 내 테이블 구조입니다 - enter image description hereMVC ViewModel 디스플레이

DeviceLog의 상세보기에 Device, Status 및 Location 필드를 표시하려고 시도하고 있습니다. 내 자신의 장치 모델을 만들었습니다.

public class DeviceLogIndexData 
{ 
    public IEnumerable<DeviceLog> DeviceLogs { get; set; } 
    public IEnumerable<DeviceStatu> DeviceStatus { get; set; } 
    public IEnumerable<DeviceLocation> DeviceLocations { get; set; } 
    public IEnumerable<Location> Locations { get; set; } 
    public IEnumerable<Status> Status { get; set; } 
    public IEnumerable<Device> Devices { get; set; } 

} 

그리고 이것을 사용하는 몇 가지 방법을 만들었습니다. 내 최신 시도했다 -

var devicelog = new DeviceLogIndexData(); 
     devicelog.DeviceLogs = db.DeviceLogs 
      .Include(d => d.Device) 
      .Include(d => d.Device.DeviceStatus.Select(s => s.Status)) 
      .Include(d => d.Device.DeviceLocations.Select(x => x.Location)) 
      .OrderBy(d => d.DeviceLogID); 

     devicelog = devicelog.DeviceLogs.Where(d => d.DeviceLogID == id.Value); 

지금 내 뷰 모델을 사용하는 방법에 그냥 완전히 좌절과 혼란 스러워요.

+0

귀하의 뷰 모델은 어떻게 생겼습니까? DeviceLogIndexData 란 무엇입니까? – Fran

+0

DeviceLogIndexData는 내 viewModel입니다. –

+0

제공하신 정보로 답변을 업데이트했습니다. – Fran

답변

0

당신은 당신의보기 모델

var devicelog = db.DeviceLogs 
      .Include(d => d.Device) 
      .Include(d => d.Device.DeviceStatus.Select(s => s.Status)) 
      .Include(d => d.Device.DeviceLocations.Select(x => x.Location)) 
      .Where(d => d.DeviceLogID == id.Value) 
      .Select(d => new DeviceLogIndexData { Name = d.Device.Name, ... }).ToList(); 

이 모든 의사 코드로 투사 할 수 있습니다. 그래서 당신은 그것으로 조금 놀아 다닐 필요가 있습니다. 뷰 모델 클래스는이

public class DeviceLogIndexData { 
public string Name {get;set;} 
public string Status {get;set;} 
public string Location {get;set;} 
} 

과 같은 형태

그런 다음보기에 IEnumerable<DeviceLogIndexData>를 반환합니다.

+0

{d.Device.somefield ...의 시점에 이르렀을 때 필드 이름을 얻기 위해 'd'또는 임의의 변형을 사용할 수 없었습니다. –

+0

공개 문자열이 표시 할 필드가 있습니까? 상태 추가를 시도했지만 여전히 괄호 안에 상태를 추가하지 않습니다. 너무 초조해. 나는 가까이에있는 것처럼 느껴지지만이 장애물을 극복 할 수없는 것 같습니다. –

+0

예. 뷰 모델 속성은 페이지에 표시 할 데이터를 나타내야합니다. – Fran