ASP.NET MVC - 显示编码字段的值

时间:2016-07-25 15:27:20

标签: c# asp.net-mvc

离开ASP.NET几年后,我最近开始回归,特别是对于MVC。 假设你有一个像这样的电影类:

public class Movie
{
    public int ID { get; set; }

    [StringLength(60, MinimumLength = 3)]
    public string Title { get; set; }

    [Display(Name = "Release Date")]
    [DataType(DataType.Date)]
    [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
    public DateTime ReleaseDate { get; set; }

    [Required]
    public int Genre { get; set; }

    [Range(1, 100)]
    [DataType(DataType.Currency)]
    public decimal Price { get; set; }

    [RegularExpression(@"^[A-Z]+[a-zA-Z''-'\s]*$")]
    [StringLength(5)]
    public string Rating { get; set; }
}

我在“创建/编辑”视图中更改了字段类型,以便用户根据以下内容从选择框中选择:

1 = Action;
2 = Adventure;
3 = Comedy;
4 = Horror;
5 = Disaster;
6 = Political;
7 = Thriller;

是否有一种简单的方法可以在视图/详细信息页面中显示相应的“Human”值而不是普通整数?

(在我非常清楚的Django中,你只需要movie.get_Genre_display()get_FOO_display()

2 个答案:

答案 0 :(得分:1)

我假设您显示DropDownList,因此您可以使用枚举:

@Html.DropDownList("Genre", 
   Html.GetEnumSelectList(typeof(Genre)) , 
   "Select My Type", 
   new { @class = "form-control" })

答案 1 :(得分:0)

如果要将枚举显示为字符串,请在模型中将其从int更改为YourEnumType:

public class Movie
{
    ...
    [Required]
    public GenreEnum Genre { get; set; }
    ...
}

在razor中写一下

@Html.DisplayFor(model=> Model.Genre )