c# - foreach 语句无法运行,因为不包含带有元组 ASP.NET MVC 的“GetEnumerator”的公共定义
问题描述
我想使用 LINQ 构建我的视图并加入 2 个表,但是我在模型中的 foreach 视图中遇到了这个错误
@foreach (var item in Model)
这是我的课:
public partial class Lab_orders_Cash
{
[Display(Name = "Order Id")]
public int cash_order_id { get; set; }
[Display(Name = "Order Date")]
public Nullable<System.DateTime> order_date { get; set; }
[Display(Name = "MRN File No.")]
public Nullable<int> patient_no { get; set; }
public string invoice_order_no { get; set; }
public string order_description { get; set; }
public string user_id { get; set; }
[Display(Name = "Order Status")]
public Nullable<int> order_status { get; set; }
public Nullable<int> catid { get; set; }
public Nullable<int> almansoor { get; set; }
public Nullable<int> prio_id { get; set; }
}
public partial class Lab_Sample_status
{
public int status_id { get; set; }
public string status_name { get; set; }
}
这是我的控制器:
public ActionResult ordersCash()
{
var OrdersList = from o in db.Lab_orders_Cash
Join os in db.Lab_Sample_status on o.order_status equals os.status_id into tablestatus
where o.patient_no == (int)Session["UserpatientNo"]
select o;
return View(OrdersList);
}
在视图中我使用了元组:
@using AljawdahNewSite.Models;
@model Tuple<Lab_orders_Cash,Lab_Sample_status>
@{
@{
ViewBag.Title = "ordersCash";
Layout = "~/Views/Shared/_LayoutPatients.cshtml";
}
<h2>Orders List </h2>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(Tuple => Tuple.Item1.cash_order_id)
</th>
<th>
@Html.DisplayNameFor(Tuple => Tuple.Item1.order_date)
</th>
<th>
@Html.DisplayNameFor(Tuple => Tuple.Item1.patient_no)
</th>
<th>
@Html.DisplayNameFor(Tuple => Tuple.Item2.status_name)
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(Tuple => Tuple.Item1.cash_order_id)
</td>
<td>
@Html.DisplayFor(Tuple => Tuple.Item1.order_date)
</td>
<td>
@Html.DisplayFor(Tuple => Tuple.Item1.patient_no)
</td>
<td>
@Html.DisplayFor(Tuple => Tuple.Item2.status_name)
</td>
<td>
@Html.ActionLink("Details", "Details", new { id=item.cash_order_id })
</td>
</tr>
}
</table>
在 foreach 中选择模型时出现此错误,我也尝试像这样在视图中使用 IEnumerable
@model Tuple<IEnumerable<Lab_orders_Cash>,IEnumerable<Lab_Sample_status>>
但是当我选择模型时出现同样的错误,它显示错误我需要更改什么来解决这个错误。
解决方案
您可以使用另一种方式,例如以下步骤:
1-创建新类并将您的表放在该类中
public class Tables
{
public Lab_orders_Cash LabOrdersCash { get; set; }
public Lab_Sample_status LabOrderStatus { get; set; }
}
2-编写控制器,如下所示:
public ActionResult ordersCash()
{
List<Lab_orders_Cash> ordercash = db.Lab_orders_Cash.ToList();
List<Lab_Sample_status> samplestatus = db.Lab_Sample_status.ToList();
var OrdersList = from o in ordercash
join st in samplestatus on o.order_status equals st.status_id
where o.patient_no == (int)Session["UserpatientNo"]
select new Tables{ LabOrdersCash = o , LabOrderStatus = st };
return View(OrdersList);
}
3-使用以下代码创建您的视图:
@model IEnumerable<AljawdahNewSite.Models.Tables>
@{
ViewBag.Title = "ordersCash";
Layout = "~/Views/Shared/_LayoutPatients.cshtml";
}
<h2>Orders List</h2>
<table class="table">
<tr>
<td> Order No. </td>
<td> order date </td>
<td> Patient No </td>
<td> Status </td>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@item.LabOrdersCash.cash_order_id</td>
<td>@item.LabOrdersCash.order_date</td>
<td>@item.LabOrdersCash.patient_no</td>
<td>@item.LabOrderStatus.status_name</td>
</tr>
}
</table>
通过这种方式,您可以更有效、更轻松地将所有表添加到该表类中,并在项目中的任何位置调用该类,并且比元组更容易。
推荐阅读
- powershell - 用于删除现有 DNS 条目并在 NIC 卡上的备用首选 DNS 上设置新条目的 PowerShell 脚本
- git - 无法登录gitlab
- powershell - Powershell5的展示
- visual-studio-code - 在 asciidoc 扩展中将 #region 折叠标记添加到 language-configuration.json
- wpf - 将标签内容移动到文本框中
- javascript - 使用 loadash 比较两个对象数组并返回一个具有共同值的数组
- javascript - 403 通过 Google-Drive-RESTAPI v3 创建文件夹
- qt - Qml样条图中的异常
- javascript - 将新数据传递给变量给了我错误
- android - 有视图包装内容,但如果空间可用,则匹配父级