2016-07-25 69 views
-1

在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; 

是否有簡單的方法來顯示相應的「人」值,而不是視圖/詳細信息頁面中的純整數?

(在Django的這我很清楚,你只需要movie.get_Genre_display()get_FOO_display()

+0

屬性類型是否必須是整數?如果是這樣,創建一個包含字符串版本的Dto對象,並將該屬性映射到它的相關字符串表示形式 –

+0

@CallumLinington您可以把它放在代碼中嗎? – zwan

回答

0

枚舉字符串,然後在模型從int更改爲YourEnumType:

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

和剃刀只寫

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

這看起來不錯,我試試這個,回到你身邊 – zwan

1

我supose你顯示一個DropDownList,所以你可以使用一個枚舉:如果您想顯示

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

我想出了這一個。我的問題是顯示頁面。如何顯示災難而不是5? – zwan

+0

搭檔,如果你想讓我們幫忙,請展示一些代碼! –

+0

也許問題不夠清楚?對於給定的Movie對象,@ Html.DisplayFor(model => model.Genre)顯示一個數字。有沒有簡單的方法讓它顯示相應的「詳細」值?例如。災難而不是5,或行動而不是1?你現在明白我的觀點了嗎? – zwan