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

C# “对象”不包含“rxDetail”的定义,c#,.net,asp.net-mvc-4,model-view-controller,C#,.net,Asp.net Mvc 4,Model View Controller,控制器代码 除了开新的处方,我还犯了这个错误。还有别的办法吗 您的MyPrescription类是内部的吗?Razor视图被编译成一个单独的程序集,因此无法在其中访问内部类 试图从动态变量访问不可访问类的属性会引发异常。您的MyPrescription类是内部类吗?Razor视图被编译成一个单独的程序集,因此无法在其中访问内部类 试图从动态变量访问不可访问类的属性会引发异常。ViewBag在内部将定义的属性值存储为对象。它实际上是一个动态类型,由将数据存储为dictionary定义。一旦您将任何

控制器代码

除了开新的处方,我还犯了这个错误。还有别的办法吗

您的MyPrescription类是内部的吗?Razor视图被编译成一个单独的程序集,因此无法在其中访问内部类

试图从动态变量访问不可访问类的属性会引发异常。

您的MyPrescription类是内部类吗?Razor视图被编译成一个单独的程序集,因此无法在其中访问内部类

试图从动态变量访问不可访问类的属性会引发异常。

ViewBag在内部将定义的属性值存储为对象。它实际上是一个动态类型,由将数据存储为dictionary定义。一旦您将任何自定义对象转换为类型对象,则除非您显式地强制转换它,否则它将不知道自定义对象的底层属性

因此,您只需在使用之前将其强制转换为自定义对象:

@ViewBag.dd中的每个var项作为MyPrescription

ViewBag在内部将定义的属性值存储为对象。它实际上是一个动态类型,由将数据存储为dictionary定义。一旦您将任何自定义对象转换为类型对象,则除非您显式地强制转换它,否则它将不知道自定义对象的底层属性

因此,您只需在使用之前将其强制转换为自定义对象:

@ViewBag.dd中的每个var项作为MyPrescription


如果它解决了你的问题,那么你可以接受它作为答案。它将帮助其他寻求类似问题的用户。事实上,我刚刚公开了我的处方类,它起了作用。我没有使用'as'关键字。这甚至不会编译。。。在尝试枚举ViewBag.dd之前,它会将其强制转换为MyPrescription。要强制转换ViewBag.dd的每个元素,您应该在ViewBag.dd中使用@foreach MyPrescription项,除非MyPrescription是公共的,否则它也不会编译。@Jakub很好!!这是一个太天真的错误。如果它解决了你的问题,那么你可以接受它作为答案。它将帮助其他寻求类似问题的用户。事实上,我刚刚公开了我的处方类,它起了作用。我没有使用'as'关键字。这甚至不会编译。。。在尝试枚举ViewBag.dd之前,它会将其强制转换为MyPrescription。要强制转换ViewBag.dd的每个元素,您应该在ViewBag.dd中使用@foreach MyPrescription项,除非MyPrescription是公共的,否则它也不会编译。@Jakub很好!!这是一个太天真的错误。没有MyPrescription类不是internal@Anish在对另一个答案的评论中,你刚才说公开课堂有帮助。这正是我在这里建议的。哦,是的!!我还推断了别的,谢谢你!不,我的处方类不是internal@Anish在对另一个答案的评论中,你刚才说公开课堂有帮助。这正是我在这里建议的。哦,是的!!我还推断了别的,谢谢你!
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>
                                        }
@foreach (MyPrescription item in ViewBag.dd)