MVC2: Использование ScaffoldColumn (false), но все еще отображать свойство в DisplayForModel () - PullRequest
1 голос
/ 09 ноября 2010

Допустим, у меня есть эта модель:

public class PartyGorilla
{
    [ScaffoldColumn(false)]
    public int Id{ get; set; }

    [DisplayName("Gorilla's Name")]
    [Required]
    public string Name{ get; set; }
}

Все работает, как нужно, при использовании EditorForModel () в моих представлениях редактирования / создания, но если я использую DisplayForModel () в моем представлении сведений, свойство Id не отображается, а это не то, что мне нужно. У меня вопрос: есть ли еще один атрибут, который мне нужно рекламировать, или мне нужно создать собственный атрибут?

Ответы [ 2 ]

4 голосов
/ 09 ноября 2010

Попробуйте использовать атрибут [HiddenInput].Вы можете выбрать отображение значения, но оно не редактируется:

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

или не отображать значение вообще:

[HiddenInput(DisplayValue = false)]
public int Id { get; set; }
1 голос
/ 09 ноября 2010

Я бы просто добавил LabelFor DisplayFor id столбец перед DisplayForModel.На самом деле я не вижу более простого решения этой проблемы.

Вы также можете создать отдельную ViewModel, но она имеет неприятный, не сухой след для того, что он на самом деле выполняет:

public class PartyGorillaView
{
    public int Id{ get; set; }

    [DisplayName("Gorilla's Name")]
    [Required]
    public string Name{ get; set; }
}

public class PartyGorillaEdit
{
    [ScaffoldColumn(false)]
    public int Id{ get; set; }

    [DisplayName("Gorilla's Name")]
    [Required]
    public string Name{ get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...