我对MVC很新,我在尝试使用规范化数据模型(只是电影列表及其演员列表)时遇到了麻烦。我有以下三种数据模型设置(简化),这是一种基本的多对多关系:
public class Movie
{
public int Movie_Id { get; set; }
public string Title { get; set; }
public string Director { get; set; }
public DateTime Release_Date { get; set; }
public MovieCast movieCast { get; set; }
}
public class MovieCast
{
public int Movie_Actor_Id { get; set; }
public int Movie_Id { get; set; }
public int Actor_Id { get; set; }
public Movie movie { get; set; }
public Actor actor { get; set; }
}
public class Actor
{
public int Actor_Id { get; set; }
public string First_Name { get; set; }
public string Last_Name { get; set; }
public string Gender { get; set; }
public DateTime Birthdate { get; set; }
public MovieCast movieCast { get; set; }
}
我希望从MovieCast控制器中显示整个演员列表。在Index.cshtml文件中,我有以下
<tr>
<th>
@Html.DisplayNameFor(model => model.Movie_Id)
</th>
<th>
@Html.DisplayNameFor(model => model.Actor_Id)
</th>
<th>
@Html.DisplayNameFor(model => model.actor.First_Name)
</th>
<th></th>
</tr>
最终的DisplayNameFor给我一个错误,说“MovieCast”不包含“actor”的定义,即使它在模型中明确声明。
有没有人有任何想法,或者我是否需要重新考虑解决方案?
答案 0 :(得分:0)
我知道电影有一个MovieCast,这是参与电影的演员列表。
另外,我永远不会在我的类中使用类似关系的结构......我更喜欢使用更面向对象的结构。
我会将其简化为:
public class Movie
{
public int Id {get;set;}
public string Title {get;set;}
public string Director {get;set;}
public DateTime ReleaseDate {get;set;}
public List<Actor> Cast {get;set;}
}
public enum Gender {
Male, Female
}
public class Actor {
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public Gender Gender { get; set; }
public DateTime Birthdate { get; set; }
}
在我看来,我会这样做:
@model List<Movie>
@foreach (var movie in Model){
<h1>@movie.Title</h1>
<h3>Movie Details:</h3>
<table>
<tr>
<td>Director:</td><td>@movie.Director</td>
</tr>
<tr>
<td>Release Date:</td><td>@movie.ReleaseDate</td>
</tr>
</table>
<h3>Cast</h3>
<ul>
@foreach(var actor in movie.Cast)
{
<li>
@actor.FirstName
</li>
}
</ul>
}
不确定是否编译,但试一试:D