【发布时间】: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