MVC查看页面未显示价值

时间:2014-06-13 12:44:25

标签: asp.net-mvc asp.net-mvc-4

我的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类的原因。

1 个答案:

答案 0 :(得分:2)

return View(mixmodel);

您的观点期待IEnumerable<NotificationViewModel>类型,但mixmodel只是NotificationViewModel

我没有看到你通过使用这个额外的类'NotificationViewModel'实现了什么。如果您的视图要更改为期望IEnumerable<EmployeeViewModal>,则可以直接传入model1。

然后,您可以将视图更改为:

@foreach (var item in Model)  
{  
    @item.stuimg1            
}  

如果确实需要为视图的其他部分提供额外的抽象层,那么您需要坐下来思考什么是单个实例以及什么是列表。如果遇到麻烦,请尝试绘制它。