控制器代码
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外,我收到此错误。还有其他方法可以继续吗?
答案 0 :(得分:0)
你的MyPrescription
课程内部吗? Razor视图被编译成一个单独的程序集,因此无法在那里访问内部类。
尝试从dynamic
变量访问不可访问类的属性会引发您获得的异常。
答案 1 :(得分:0)
ViewBag
在内部将定义的属性值存储为Object。它实际上是由ExpandoObject定义的动态类型,它将数据存储为字典。将任何custom object
转换为object
类型后,除非您明确强制转换,否则它不会知道自定义对象的基础属性。
因此,您需要做的就是在使用之前将其强制转换为自定义对象:
@foreach(ViewBag.dd中的var项目为MyPrescription)
@foreach (MyPrescription item in ViewBag.dd)