【问题标题】:MVC View Page not showing ValueMVC 视图页面未显示值
【发布时间】:2014-06-13 12:44:25
【问题描述】:

我的模型类如下: 我有三个类,其中两个是偏类,一个是简单类.......

[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; }
}

然后我在控制器类中使用下面的代码来获取注册表中带有外键的图像记录。

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);  

最后我的查看页面是这样的:-

@model IEnumerable<Amar.Models.NotificationViewModel>  

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

但我收到一个错误

System.Collections.Generic.IEnumerable' 不包含 'stuimg1' 的定义,并且找不到接受类型为'System.Collections.Generic.IEnumerable' 的第一个参数的扩展方法 'stuimg1'(您是否缺少使用指令还是程序集引用?)

我已经调试好我的代码,直到控制器页面...但是从视图页面看,值没有显示。我认为我犯了一些小错误...

请有人帮助我..自 2 周以来我一直在尝试解决这个问题....

我想从同一个视图页面上的另一个类中获取数据,这就是我使用 NotificationViewModel 类的原因。

【问题讨论】:

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


    【解决方案1】:
    return View(mixmodel);
    

    您的视图需要 IEnumerable&lt;NotificationViewModel&gt; 类型,但 mixmodel 只是 NotificationViewModel

    我没有看到你通过拥有这个额外的类“NotificationViewModel”来实现什么。如果您的视图要更改为期望 IEnumerable&lt;EmployeeViewModal&gt;,您可以直接传入 model1。

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

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

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

    【讨论】:

    • 谢谢克里斯...实际上我想要在同一个视图页面上也有一些其他课程,这就是为什么..我正在添加 NotificationViewModel 课程。给出任何想法..因为我的思想被阻塞了...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多