【问题标题】:CS1061: 'IEnumerable<Orders_Tables>' does not contain a definition for 'labViewResult' and no extension method 'labViewResult'CS1061:“IEnumerable<Orders_Tables>”不包含“labViewResult”的定义,也没有扩展方法“labViewResult”
【发布时间】:2020-09-12 15:52:35
【问题描述】:

点击详情链接时出现此错误:

CS1061:“IEnumerable”不包含“labViewResult”的定义,并且找不到接受“IEnumerable”类型的第一个参数的扩展方法“labViewResult”(您是否缺少 using 指令或程序集引用?)

这是我的模型:

public partial class LAB_RESULTS_CLINIC_VIEW
    {
        public int order_number { get; set; }
        public int Test_Id { get; set; }
        public string Test_Name { get; set; }
        public string Normal { get; set; }
        public Nullable<System.DateTime> Report_Date { get; set; }
        public string Result { get; set; }
        public string Notes { get; set; }
        public string Low_Range { get; set; }
        public string High_Range { get; set; }
        public string Panic { get; set; }
        public string Text_Range { get; set; }
        public string machine_name { get; set; }
        public Nullable<int> Customer_No { get; set; }
        public string Customer_Name { get; set; }
        public Nullable<int> Patient_No { get; set; }
        public string Patient_Name { get; set; }
        public string Clinic_File_No { get; set; }
        public string Category { get; set; }
        public Nullable<int> AGE { get; set; }
        public string SEX { get; set; }
        public string Test_Note { get; set; }
        public string UNIT { get; set; }
        public Nullable<int> DEPTID { get; set; }
        public Nullable<System.DateTime> Collection_Date { get; set; }
        public Nullable<System.DateTime> Receiving_Date { get; set; }
        public string Group_Name { get; set; }
        public Nullable<int> SERIAL { get; set; }
        public int GROUPID { get; set; }
        public Nullable<int> packageid { get; set; }
        public string EXAMINED_BY { get; set; }
        public string APPROVED_BY { get; set; }
        public string UPDATED_BY { get; set; }
        public Nullable<System.DateTime> UPDATED_DATE { get; set; }
        public string Comments { get; set; }
        public string department_name { get; set; }
    }
}

我创建了一个表类orders_tables:

 public class Orders_Tables
    {
        public Lab_Orders LabOrders { get; set; }
        public Lab_orders_Cash LabOrdersCash { get; set; }
        public Lab_Sample_status LabOrderStatus { get; set; }

        public LAB_RESULTS LabResults { get; set; }
        public LabTests labtests { get; set; }
        public LAB_RESULTS_CLINIC_VIEW labViewResult { get; set; }

       public Lab_Hematology_Samples LabSamples { get; set; }

      public Patients patients { get; set; }
    }

那么这是我的控制器:

public ActionResult MasterDetails(int id)
        {

            List<LAB_RESULTS_CLINIC_VIEW> Lab_View = db.LAB_RESULTS_CLINIC_VIEW.ToList();

            var OrderResult = from o in Lab_View
                              where o.order_number == id
                              select new Orders_Tables { labViewResult = o };

            return View(OrderResult);

        }

最后这是我的看法:

@model IEnumerable<AljawdahNewSite.Models.Orders_Tables>
@{
    ViewBag.Title = "MasterDetails";
    Layout = "~/Views/Shared/_LayoutPatients.cshtml";
}

<h2>Order Result - نتائج التحاليل </h2>

<div style="margin-left:20px">
    <hr/>
    <dl class="horizontal">
        <dt>@Html.DisplayNameFor(model => model.labViewResult.Patient_Name)</dt>
        <dd>@Html.DisplayFor(model => model.labViewResult.Patient_Name)</dd>
        <dt>@Html.DisplayNameFor(model => model.labViewResult.Patient_No)</dt>
        <dd>@Html.DisplayFor(model => model.labViewResult.Patient_No)</dd>
        <dt>@Html.DisplayNameFor(model => model.labViewResult.SEX)</dt>
        <dd>@Html.DisplayFor(model => model.labViewResult.SEX)</dd>
        <dt>@Html.DisplayNameFor(model => model.labViewResult.AGE)</dt>
        <dd>@Html.DisplayFor(model => model.labViewResult.AGE)</dd>
        <dt>@Html.DisplayNameFor(model => model.labViewResult.order_number)</dt>
        <dd>@Html.DisplayFor(model => model.labViewResult.order_number)</dd>


    </dl>
</div>

<div style="align-content:center">
    <table class="table table-bordered">
        <tr>

            <td> test name    </td>
            <td> result  </td>
            <td> From Range   </td>
            <td> To Range </td>
            <td> Other Range    </td>
            <td> Report Date  </td>


        </tr>

        @foreach (var item in Model)
        {
            <tr>

                <td>@item.labViewResult.Test_Name</td>
                <td>@item.labViewResult.Result</td>
                <td>@item.labViewResult.Low_Range</td>
                <td>@item.labViewResult.High_Range</td>
                <td>@item.labViewResult.Text_Range</td>
                <td>@item.labViewResult.Report_Date</td>


            </tr>
        }
    </table>
</div>

错误出现在 displatyfor rows

@Html.DisplayFor(model => model.labViewResult.Patient_Name)

如何解决这个错误,我查看了这个网站的解决方案,但没有解决。

【问题讨论】:

  • 型号为IEnumerablelabViewResultIEnumerable&lt;AljawdahNewSite.Models.Orders_Tables&gt;中不存在,建议使用model.First().labViewResult...
  • @Sajid 非常感谢它的工作,你可以添加答案,另一件事是标题在一行中,数据在另一行中,我将如何将它放在一行中标题和数据
    如何拼接成一行,再次感谢 :)
  • @Sajid assalam alykum 兄弟,你好吗?请帮我在 MVC 中打印水晶报告这是问题stackoverflow.com/questions/62498523/…
  • salam 大哥,我没用过 Crustal 报告,我在网上查了一下,可能会有所帮助link1,link2,link3
  • @Sajid 谢谢兄弟水晶报告现在正在运行,我现在的问题是如何将多个参数从 MVC 视图传递到 webform,我为 order_id 、 dept_Id 、 test_id 和文化及其打印提供静态值跨度>

标签: asp.net-mvc model-view-controller


【解决方案1】:

您可以通过仅使用 FirstOrDefault() 或 First() 来解决它,但如果使用 First() 可能会出现错误“序列不包含元素”,因此建议使用 FirstOrDefault():

<dt>@Html.DisplayNameFor(model => model.labViewResult.Patient_Name)</dt>
<dd>@Html.DisplayFor(model => model.FirstOrDefault().labViewResult.Patient_Name)</dd>
<dt>@Html.DisplayNameFor(model => model.labViewResult.Patient_No)</dt>
<dd>@Html.DisplayFor(model => model.FirstOrDefault().labViewResult.Patient_No)</dd>
<dt>@Html.DisplayNameFor(model => model.labViewResult.SEX)</dt>
<dd>@Html.DisplayFor(model => model.FirstOrDefault().labViewResult.SEX)</dd>
<dt>@Html.DisplayNameFor(model => model.labViewResult.AGE)</dt>
<dd>@Html.DisplayFor(model => model.FirstOrDefault().labViewResult.AGE)</dd>
<dt>@Html.DisplayNameFor(model => model.labViewResult.order_number)</dt>
<dd>@Html.DisplayFor(model => model.FirstOrDefault().labViewResult.order_number

关于连接 dt 和 dd 的问题,您可以对 dt 和 dd 应用一些样式,您可以尝试以下操作:

<dt style="width: 30%;display: inline-block;">@Html.DisplayNameFor(model => model.labViewResult.Patient_Name)
</dt><dd style="width: 40%;display: inline-block;">@Html.DisplayFor(model => model.FirstOrDefault().labViewResult.Patient_Name)</dd>

【讨论】:

  • 如果列表为空,FirstOrDefault 将无法解决问题,因为labViewResult 将为空。所以DisplayFor 会抛出 null 引用异常,你必须把它放在变量中,并使用它来测试 null 只是为了 DisplayFor
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-27
  • 1970-01-01
  • 1970-01-01
  • 2013-01-09
  • 2018-09-24
  • 1970-01-01
相关资源
最近更新 更多