Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC+中的详细信息视图;连接表_C#_Asp.net Mvc - Fatal编程技术网

C# MVC+中的详细信息视图;连接表

C# MVC+中的详细信息视图;连接表,c#,asp.net-mvc,C#,Asp.net Mvc,我需要一些关于这个问题的建议/帮助。我一直在网上搜寻,我有点困惑 基本上我有一个视图索引,它列出了我所有的电影。有一个详细视图,显示有关该影片的其他信息。我的问题是,当我查看详细信息视图时,它没有显示我的某些值。我理解为什么,因为我有一个强类型模型,但我需要一些帮助来解决这个问题 模型 控制器 public ActionResult Details(int id = 0) { Film film = db.Films.Find(id); if (

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

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

模型

控制器

    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=“详细信息”;
}
细节
胶卷
@Html.DisplayNameFor(model=>model.Title):
@DisplayFor(model=>model.Title)
@DisplayNameFor(model=>model.Owner.Owner\u FirstName)
@DisplayFor(model=>model.Owner.Owner\u FirstName)

将显示正确的记录,但owner_FirstName的值为空。是否需要加入控制器中的所有者表?

如果使用实体框架,则在获取影片时可能无法获取导航属性,如
owners
。试试这个怎么样:

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

在此行上放置断点:
返回视图(胶片)
并检查
胶片的值。如果
film.owners.Owner\u FirstName
为空,则需要查看
db.Films.Find()
方法是否正确地在数据库中查询
owners
属性。感谢您这么快返回。将值写入屏幕的最佳方式是什么?我设法检查了胶片对象,当我查看胶片标题时,它会正确地显示在控制台上。当我看电影时,我得到一个空引用的例外。你是一个明星。非常感谢您在这方面花时间。我原以为这与那句话有关,但却在苦苦思索该写些什么。再次感谢。
    @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>
Film film = db.Films.Include(f=> f.owners).SingleOrDefault(f => f.FilmId == id);