'对象'不包含' rxDetail'的定义

时间:2015-10-25 16:44:05

标签: c# .net asp.net-mvc-4 model-view-controller

控制器代码

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外,我收到此错误。还有其他方法可以继续吗?

2 个答案:

答案 0 :(得分:0)

你的MyPrescription课程内部吗? Razor视图被编译成一个单独的程序集,因此无法在那里访问内部类。

尝试从dynamic变量访问不可访问类的属性会引发您获得的异常。

答案 1 :(得分:0)

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

因此,您需要做的就是在使用之前将其强制转换为自定义对象:

@foreach(ViewBag.dd中的var项目为MyPrescription)

@foreach (MyPrescription item in ViewBag.dd)