我的Model类如下: 我有三个班,其中两个是部分班,一个是简单班.......
[MetadataType(typeof(RegistrationMetaData))]
public partial class Registration
{
}
public class RegistrationMetaData
{
public string Id { get; set; }
public string Name { get; set; }
public string Username { get; set; }
public virtual ICollection<Images> Images { get; set; }
}
[MetadataType(typeof(ImagesMetaData))]
public partial class Images
{
}
public class ImagesMetaData
{
public string id { get; set; }
public string stuid { get; set; }
public string stuimg1 { get; set; }
public virtual ICollection<Registration> Registrations { get; set; }
}
public class EmployeeViewModel
{
public string Name { get; set; }
public string stuimg1 { get; set; }
}
public class NotificationViewModel
{
public Registration registration { get; set; }
public Notification notification { get; set; }
public IEnumerable<EmployeeViewModel> EmployeeViewModel { get; set; }
public Images images { get; set; }
}
然后我在控制器类中使用了以下代码,在注册表中使用外键获取Images记录。
IEnumerable<EmployeeViewModel> model1 = null;
model1 = (from e in db.Registrations
join j in db.Images on e.Id equals j.stuid
where e.Email == Email
select new EmployeeViewModel
{
Name = e.Name,
stuimg1 = j.stuimg1
}).ToList();
var mixmodel = new NotificationViewModel
{
EmployeeViewModel = model1
};
return View(mixmodel);
Atlast我的观看页面是这样的: -
@model IEnumerable<Amar.Models.NotificationViewModel>
@foreach (var item in Model)
{
@item.EmployeeViewModel.stuimg1
}
但我收到错误
System.Collections.Generic.IEnumerable'不包含'stuimg1'的定义,并且没有扩展方法'stuimg1'接受类型'System.Collections.Generic.IEnumerable'的第一个参数可以找到(你错过了吗?使用指令或程序集引用?)
我已经完成调试我的代码很好,直到控制器页面...但是从视图页面看,值没有显示。我认为我有一些小错误...
请有人帮助我..我试图解决这个问题,因为2周......
我想从同一个视图页面上的另一个类中获取数据,这就是我使用NotificationViewModel类的原因。
答案 0 :(得分:2)
return View(mixmodel);
您的观点期待IEnumerable<NotificationViewModel>
类型,但mixmodel只是NotificationViewModel
我没有看到你通过使用这个额外的类'NotificationViewModel'实现了什么。如果您的视图要更改为期望IEnumerable<EmployeeViewModal>
,则可以直接传入model1。
然后,您可以将视图更改为:
@foreach (var item in Model)
{
@item.stuimg1
}
如果确实需要为视图的其他部分提供额外的抽象层,那么您需要坐下来思考什么是单个实例以及什么是列表。如果遇到麻烦,请尝试绘制它。