(第一次!)使用ASP.NET CORE 2.0 MVC。 EF Db首先。
我在这里和网上搜索了大量的主题,似乎找不到我认为简单的主人/细节的答案'查看问题。
我有一个视图(没有输入条目,表格等,jus只读视图!),应该显示主要细节(电影标题,摘要)以及相关场景列表的模型。但是场景列表没有显示任何内容,所以将链接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>
MovieController:
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或部分查看方法,我尝试过但两种帐户都失败了。
非常感谢
答案 0 :(得分:0)
修改您的查询以获取电影,如下所示。
var movie = await _context.Set<Movie>().Include(x => x.Scenes);