Как получить свойства Timestamp, которые будут отображаться при использовании EditorForModel ()? - PullRequest
1 голос
/ 01 февраля 2011

У меня есть следующая сущность домена, украшенная System.ComponentModel.DataAnnotations:

    [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) прекрасно работает.

Ответы [ 3 ]

3 голосов
/ 02 февраля 2011

Вы также можете создать шаблон EditorTemplate с именем Version и оформить вывод так, как считаете нужным.добавьте атрибут UIHint к версии, чтобы использовать его.

2 голосов
/ 02 февраля 2011

A byte[] считается сложным типом по методу EditorForModel, и в настоящее время нет возможности отображать их.Вы можете попробовать добавить в вашу модель другое свойство (например, string), которое будет считывать и записывать в ваше свойство Version.

1 голос
/ 08 марта 2011

Лучше написать свой собственный шаблон (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);
  }
...