MVC 3 Ошибка для навигации между моделями в представлении - PullRequest
0 голосов
/ 25 июля 2011

Я застрял в этой проблеме на весь день, спасибо, если кто-нибудь может сказать мне, как, Спасибо!

Я использую 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 Ответ

0 голосов
/ 25 июля 2011

Вы можете использовать метод Include, чтобы загружать навигационное свойство employee

public ActionResult Index()
{
    var job = _db.Jobs.Include(job => job.employee);
    return View(job);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...