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