【问题标题】:ASP.NET MVC Core, Cannot see list in master details viewASP.NET MVC Core,在主详细信息视图中看不到列表
【发布时间】:2018-08-22 20:28:43
【问题描述】:

(第一次!)使用 ASP.NET CORE 2.0 MVC。 EF Db 优先。

我在这里和网上搜索了大量主题,但似乎无法找到我认为是简单的“主/详细信息”VIEW 问题的答案。

我有一个来自模型的视图(没有输入条目、表单等,只是只读视图!),它应该显示主要细节(电影标题、摘要)及其相关场景的列表。但是场景列表没有显示任何内容,那么将链接 ID 标题 ID 传递给列表是否存在问题?

这是我的代码:

型号:

 Movie.cs

public partial class Movie
{
    public Movie()
    {
        Scenes = new HashSet<Scene>();
    }

    [Key]
    public int TitleId { get; set; }
    [Required]
    public string Title { get; set; }
    [DisplayName("Year")]
    public int? TitleYear { get; set; }
    public string Summary { get; set; }       

    public ICollection<Scene> Scenes { get; set; }

}

 Scene.cs

public partial class Scene
{
    [Key]
    public int SceneId { get; set; }
    [ForeignKey("TitleId")]
    public int? TitleId { get; set; } // foreign key from Movie
    public string LocationSite { get; set; }       
    public int? SceneOrder { get; set; }     

    public Movie Title { get; set; }
}

查看(Details.cshtml)

@model MaltaMoviesMVCcore.Models.Movie

<h2>@Model.TitleAndYear()</h2>
<img src="@($"/images/titles/{@Model.TitleId}.jpg")" alt="@Model.Title" />

<br /><br />
@Html.DisplayFor(model => model.Summary)

<br /><br />

  <table class="table">
      <thead>
          <tr>
              <th>
                  Scene Id
              </th>
              <th>
                  Scene Order
              </th>
              <th>
                  Location 
              </th>
              <th></th>                
          </tr>
      </thead>
      <tbody>
          @foreach (var item in Model.Scenes)
    {
      <tr>
          <td>
              @Html.DisplayFor(modelItem => item.SceneId)
          </td>
          <td>
              @Html.DisplayFor(modelItem => item.SceneOrder)
          </td>
          <td>
              @Html.DisplayFor(modelItem => item.LocationSite)
          </td>
      </tr>
}
      </tbody>
  </table>
<a asp-action="Index">Back to Movie List</a>

电影控制器:

public async Task<IActionResult> Details(int? id)
    {
        if (id == null)
        {
            return NotFound();
        }

        var movie = await _context.Movies
            .SingleOrDefaultAsync(m => m.TitleId == id);
        if (movie == null)
        {
            return NotFound();
        }

        return View(movie);
    }

初始 ID 是通过操作链接从以前的电影列表页面传递的。

没有错误,只是没有显示场景列表。我是否缺少控制器或 foreach 循环等中的某些内容?

我会从使用 ViewModel 或部分视图方法中受益吗?我尝试过但在两个帐户上都失败了。

非常感谢

【问题讨论】:

    标签: asp.net asp.net-mvc master-detail


    【解决方案1】:

    修改您的查询以获取电影,如下所示。

     var movie = await _context.Set<Movie>().Include(x => x.Scenes);  
    

    【讨论】:

    • 抱歉回复延迟。不,它没有。 出错...'类型或命名空间'Movies'未定义'
    • 使用电影而不是电影并在那里添加该类的引用。如果您当前的代码适用于电影,那么这必须有效。
    • 我现在遇到的错误,上面突出显示的行是......“ICollection>”不包含“GetAwaiter”的定义,并且没有扩展方法“GetAwaiter”接受第一个可以找到“IIncludableQueryable>”类型的参数(您是否缺少 using 指令或程序集引用?)”
    猜你喜欢
    • 2022-10-17
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    • 2014-08-01
    相关资源
    最近更新 更多