繁体   English   中英

“对象”不包含“ rxDetail”的定义

[英]'object' does not contain a definition for 'rxDetail'

控制器代码

public ActionResult Index()
        {
            var data = (from pd in db.Prescription_Details join md in db.Medicine_Details 
                        on pd.Medicine_Id equals md.Medicine_Id 
                        select new MyPrescription {rxDetail=pd.Rx_Detail_Id , medicineName=md.Medicine_Name , dosageFrequency= pd.Dosage_Frequency}).ToList();  

            var prescs = db.Prescription_Details.Select(x => x.Prescription.Doctor_Details.Doctor_Name).Distinct().ToList();
            //entity
            ViewBag.prescriptions = prescs;
            ViewBag.dd = data;
            return View();
        }

Razor code 
 @foreach (var item in ViewBag.dd)
                                        {
                                            <tr>
                                                <td>@item.rxDetail</td>
                                                <td>@item.medicineName</td>
                                                <td>@item.dosageFrequency</td>
                                            </tr>
                                        }

除了创建新类MyPrescriptions之外,我还会遇到此错误。 还有其他方法可以继续吗?

您的MyPrescription类是内部类吗? 剃刀视图被编译为单独的程序集,因此内部类无法在其中访问。

尝试从dynamic变量访问无法访问的类的属性会引发异常。

ViewBag内部将定义的属性值存储为Object。 它实际上是ExpandoObject定义的动态类型,将数据存储为字典。 一旦将任何custom object转换为类型object ,除非明确地将其强制转换,否则它将不知道自定义对象的基础属性。

因此,您需要做的就是将其转换为自定义对象,然后再使用:

@foreach(ViewBag.dd中的变量项作为MyPrescription)

@foreach (MyPrescription item in ViewBag.dd)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM