2011-12-06 5 views
0

です。foreachループを含むビューにビューモデルを渡しています。このビューモデルには2つのリストが含まれています。これらのリストはLinqを使って埋められます。MVC3辞書に渡されるモデル項目は '_320.Models.MyViewModel'ですが、

次のコードでは、次のエラーが表示されます。辞書に渡されたモデルアイテムが '_320.Models.MyViewModel'タイプですが、この辞書には 'System.Collections.Generic.IEnumerable `1 [_320.Models.MyViewModel] '。

ビューのforeachループでViewModelの2つのリストに含まれるプロパティに到達したいとします。

私は私のコントローラのコードの末尾を変更することによって、ビューを表示することができましたUPDATE

List<MyViewModel> MyList = new List<MyViewModel>(); 
      MyList.Add(_myViewModel); 
       return View(MyList); 

はしかし、それはヘッダが、何もない空の図です。私の視野内のフィールドを@Html.DisplayFor(modelItem => item.rx.Rx_ID)から@Html.DisplayFor (modelItem => item.Rxes.rx.Rx_ID)に変更しようとすると、赤色になります。それは遠くにあるリストにあるプロパティにアクセスすることは不可能ですか? UPDATE OF

END

モデル

public class MyViewModel 
    { 

     public Patient patient { get; set; } 
     public Rx rx { get; set; } 
     public Fill fill { get; set; } 
     public List<Rx> Rxes { get; set; } 
     public List<Fill> Fills { get; set; } 

コントローラ

public ActionResult AllFilled() 
     { 
      MyViewModel _myViewModel = new MyViewModel(); 
      List<Fill> FillList = db.Fills.Where(p => p.Status == "Filled").ToList(); 
      List<Rx> RxList = new List<Rx>(); 
      Rx myRx = new Rx(); 
      foreach (var item in FillList) 
      { 
       myRx = db.Rxes.Single(p => p.Rx_ID == item.Rx_ID); 
       RxList.Add(myRx); 
      } 
      _myViewModel.Fills = FillList; 
      _myViewModel.Rxes = RxList; 

       return View(_myViewModel); 
      } 
     } 

ビュー

@model IEnumerable<_320.Models.MyViewModel> 

@{ 
    ViewBag.Title = "AllFilled"; 
} 

<h2>AllFilled</h2> 

<p> 
    @Html.ActionLink("Create New", "Create") 
</p> 
<table> 
    <tr> 
     <th> 
      NDC 
     </th> 
     <th> 
      Rx_ID 
     </th> 
     <th> 
      Fill_ID 
     </th> 
     <th> 
      Status 
     </th> 
     <th> 
      Filled Date 
     </th> 
     <th> 
      Filled By 
     </th> 
     <th></th> 
    </tr> 
    { 
@foreach (var item in Model) { 
    <tr> 
     <td> 
      @Html.DisplayFor(modelItem => item.rx.NDC) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.rx.Rx_ID) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem =>item.fill.Fill_ID) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.fill.Status) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.fill.Filled_Date) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.fill.Filled_By) 
     </td> 
     <td> 
      @Html.ActionLink("Details", "Details", new { id=item.rx.Rx_ID }) 
     </td> 
    </tr> 
} 
</table> 

答えて

1

ビュー内の最初の行のために、ビューにIEnumerableタイプのモデル< _320.Models.MyViewModel>が必要です。あなたは(あなたのコントローラにコード化されたとして)型MyViewModelのモデルオブジェクトを使用したい場合は

@model IEnumerable<_320.Models.MyViewModel> 

は、私がこれを行うとき、私は私のモデルが含まれていないというエラーを取得

@model _320.Models.MyViewModel 
+0

にこの行を変更しますGetEnumerator – HendPro12

+0

@foreach(Model内のvarアイテム)行には、あなたのモデルはループ内で使用しているように、それぞれfillとrxオブジェクトを含むMyViewModelオブジェクトのリストにすぎないということが書かれています。 しかし、コントローラ内の1つのMyViewModelオブジェクトの塗りつぶしとrxオブジェクトの2つの別々のリストを塗りつぶしています。代わりに、MyViewModelのリストを作成する必要があり、それぞれにfillおよびrxオブジェクトが必要です。 – Prafulla

関連する問題