1

我有飾有System.ComponentModel.DataAnnotations以下域實體:當我使用EditorForModel()時,如何獲取Timestamp屬性?

[HiddenInput(DisplayValue=false)]   
    public int Id { get; set; } 

    [Required] 
    [Display(Name="Last Name")] 
    public string LastName { get; set; } 

    [Display(Name = "First Name")] 
    public string FirstName { get; set; } 

    [DataType(DataType.EmailAddress)] 
    public string Email { get; set; }   

    [Timestamp] 
    [HiddenInput(DisplayValue=true)] 
    [ScaffoldColumn(true)] 
    public byte[] Version { get; set; } 

當我使我在使用@Html.EditorForModel()什麼視圖模型渲染的版本屬性。有什麼可以強制EditorForModel()方法呈現byte[]

PS:使用@Html.EditorFor(x => x.Version)工作得很好。

回答

2

A byte[]EditorForModel方法視爲複雜類型,目前無法顯示這些方法。您可以嘗試將另一個屬性添加到您的模型(例如,鍵入爲string),該屬性將讀取並寫入您的Version屬性。

3

您也可以創建一個名爲Version的EditorTemplate並設計輸出結果。爲版本添加一個UIHint屬性以便使用它。

+0

真,自定義編輯模板應該工作。 – marcind 2011-02-01 21:28:56

1

最好編寫你自己的模板(Object.ascx)。 複製標準MVC Object.ascx模板,改變ShouldShow方法:

public static bool ShouldShow(ModelMetadata metadata, ViewDataDictionary viewData) { 
     return metadata.ShowForDisplay 
     && metadata.ModelType != typeof(System.Data.EntityState) 
     && (!metadata.IsComplexType || metadata.ModelType == typeof(System.Byte[])) 
     && !viewData.TemplateInfo.Visited(metadata); 
    } 
相關問題