【发布时间】:2017-08-22 21:11:31
【问题描述】:
我正在尝试创建一个允许将电影存储在数据库中的小型网络应用程序。我有这个Movie 类:
public class Movie
{
public string Title { get; set; }
public string Synopsis { get; set; }
public List<string> Actors { get; set; }
public DateTime StartDate { get; set; }
public string MoviePic { get; set; } // path to image
public int RunningTime { get; set; } // in minutes
public string Trailer { get; set; } // youtube url
}
在我的控制器中,我正在尝试使用该类创建电影:
var jurassicPark = new Movie
{
Title = "Jurassic Park",
Synopsis = "Dinosaurs go crazy on an island.",
MoviePic = "jurassicLogo.jpg"
};
所有这些都很好,但我还想添加一个Rating 属性,它只能是代表该评级标志图像的四个字符串之一。换句话说,我不想只拥有一个可以是任何旧字符串的public string Rating 属性。我只想在四个特定字符串之间进行选择。
例如,我原来把这个放在Movie类中:
public class Rating
{
public string GRating = "g.jpg";
public string PgRating = "pg.jpg";
public string Pg13Rating = "pg13.jpg";
public string RRating = "r.jpg";
}
这不起作用,所以我做了一些谷歌搜索并尝试了这个:
public enum Rating
{
GRated = "G.jpg",
PgRated = "PG.jpg",
Pg13Rated = "PG13.jpg",
RRated = "R.jpg"
}
那也没用。我可以在我的控制器中调用Movie.Rating.GRated,但我实际上无法为电影分配评级。我尝试将public Rating Rating { get; set; } 添加到电影类,这似乎可以让我在控制器中为我的jurassicPark 对象添加评级,但它不喜欢我尝试的任何东西(例如:Rating = Movie.Rating.Pg13Rated 给了我一个红色波浪)。
看起来这应该超级简单,但我对 ASP.Net 还是有点陌生,我在这个方面遇到了很多麻烦。
【问题讨论】:
-
我确实尝试过,但我不知道如何分配评级(见底部段落)
-
我在底部提到过尝试
-
enum是正确的选择,因为您知道它们永远不会改变 - 但枚举必须是整数类型(char除外) - 通常是int,但也可以是byte、@987654337 @ 等。该值不能是string。如果要将Rating.GRated显示为“g.jpg”,则使用[Display]属性 -
请考虑在多个国家/地区使用多种分级系统,并且电影可以重新分级(在编辑、上诉或事件之后)。虽然您一开始可能不想实现如此复杂的模型,但它可能会影响您选择实现当前更简单的模型的方式。例如@Shyju 的answer。 (这里有竞争模式和反模式。)
标签: c# asp.net asp.net-mvc class enums