2016-07-15 9 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); 

私はちょうど私のViewModelの使い方に全く迷っています。

+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

関連する問題