在视图中的模型之间导航的 MVC 3 错误

Posted

技术标签:

【中文标题】在视图中的模型之间导航的 MVC 3 错误【英文标题】:MVC 3 Error for Navigating between Models in View 【发布时间】:2011-07-25 09:38:29 【问题描述】:

我整个下午都被这个问题困住了,如果有人能告诉我怎么做,不胜感激,谢谢!

我正在使用 MVC 3 并设置了两个模型:

public class Employee
    
    [Key]
    public virtual int Id  get; set; 
    public virtual string Emp_Id  get; set; 
    public virtual string Emp_Name  get; set; 
    public virtual int Emp_Type  get; set; 

    public virtual ICollection<Job> Jobs  get; set; 
    

public class Job

    [Key]
    public virtual int Id  get; set; 
    public virtual string SO  get; set; 
    public virtual int? Manhour_Type  get; set; 
    public virtual DateTime? StartJob  get; set; 
    public virtual DateTime? EndJob  get; set; 
    public virtual double? Duration  get; set; 

    public virtual Employee employee  get; set; 

这段代码生成了两个数据库:

public class JMCDB : DbContext

    public DbSet<Employee> Employees  get; set; 
    public DbSet<Job> Jobs  get; set; 

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    
        modelBuilder.Entity<Job>().HasRequired(j => j.employee).WithMany(e => e.Jobs);
    

我创建 JobController 如下:

public class JobController : Controller

    //
    // GET: /Job/

    JMCDB _db = new JMCDB();

    public ActionResult Index()
    
        var job = _db.Jobs;
        return View(job);
    
 

在“查看”中,我想查看此特定工作的员工姓名:

@foreach (var item in Model) 
<tr>
    <td>
        @html.DisplayFor(modelItem => item.SO)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.Manhour_Type)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.StartJob)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.EndJob)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.employee.Emp_Name)
    </td>
    <td>

    </td>
    </tr>

但是当我运行程序时,最后一行代码出现错误

"@Html.DisplayFor(modelItem => item.employee.Emp_Name)"

我不知道如何解决,如果有人能告诉我如何解决,谢谢。

【问题讨论】:

能否提供更多源代码?您如何“加载”您的实体以及异常消息是什么? 【参考方案1】:

您可以使用Include 方法预先加载导航属性employee

public ActionResult Index()

    var job = _db.Jobs.Include(job => job.employee);
    return View(job);

【讨论】:

非常感谢!它有效,虽然我还没有弄清楚为什么。但真的很感激!

以上是关于在视图中的模型之间导航的 MVC 3 错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在不同项目中的视图/视图模型之间导航

在没有模型的情况下在 MVC 中引发验证错误

尝试在视图中使用模型时出现 MVC 错误

如何通过 Xamarin MvvmCross 中的 BottomNavigationView 在视图模型之间导航

在部分视图 MVC5 之间传递视图模型

主键 mvc 实体框架模型错误