【问题标题】:Details View in MVC + Joining TablesMVC + 连接表中的详细信息视图
【发布时间】:2014-03-30 18:28:32
【问题描述】:

我需要一些关于这个问题的建议/帮助。我一直在互联网上四处寻找,我有点困惑。

基本上我有一个视图-索引列出了我所有的电影。有一个详细信息视图,显示有关电影的其他信息。我遇到的问题是,当我查看详细信息视图时,它没有显示我的一些值。我理解为什么我有一个强类型模型,但我需要一些帮助来解决这个问题。

型号

    public class Film
    {
      public int FilmID { get; set; }

      [StringLength(60, MinimumLength = 1)]
      [Required]
      public string Title { get; set; }
      ..............

      public Owner owners { get; set; }
    }

控制器

    public ActionResult Details(int id = 0)
    {
        Film film = db.Films.Find(id);

        if (film == null)
        {
            return HttpNotFound();
        }

        return View(film);
    }

查看

    @model SwapShop.Models.Film
    @{
      ViewBag.Title = "Details";
    }

    <h2>Details</h2>

    <fieldset>
    <legend>Film</legend>
    <div class="display-label">
      @Html.DisplayNameFor(model => model.Title):
    </div>   
    <div class="display-field">
      @Html.DisplayFor(model => model.Title)
    </div>

    <div class="display-label">
      @Html.DisplayNameFor(model => model.owners.Owner_FirstName)
    </div>
    <div class="display-field">
      @Html.DisplayFor(model => model.owners.Owner_FirstName)
    </div>
    </fieldset>

正在显示正确的记录,但 owner_FirstName 的值为空白。我需要加入控制器中的 Owner 表吗?

【问题讨论】:

  • 在这一行下断点:return View(film) 并检查film 的值。如果film.owners.Owner_FirstName 为空,那么您需要查看db.Films.Find() 方法是否正确查询您的数据库中的owners 属性。
  • 感谢您这么快回来。将值写到屏幕上的最佳方式是什么?
  • 我设法检查了电影对象,当我查看电影标题时,它正确地显示在控制台上。当我查看films.owners.Owner_FirstName 时,我得到一个nullrefexception。

标签: c# asp.net-mvc


【解决方案1】:

如果您使用的是 Entity Framework,则在获取影片时可能无法获取像 owners 这样的导航属性。试试这个怎么样:

Film film = db.Films.Include(f=> f.owners).SingleOrDefault(f => f.FilmId == id);

【讨论】:

  • 你的明星。非常感谢您花时间在这方面。我认为这与那句话有关,但正在为写什么而苦苦挣扎。再次感谢。
猜你喜欢
  • 1970-01-01
  • 2010-12-06
  • 2016-04-14
  • 1970-01-01
  • 2014-12-08
  • 2022-10-17
  • 2014-08-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多