разница между: [ScaffoldColumn (false)] и [Display (AutoGenerateField = false)] - PullRequest
6 голосов
/ 23 сентября 2011

Чтобы отобразить HTML в моем редактируемом виде, я использую помощника @Html.EditorForModel().

Моя модель:

[Required(ErrorMessage = "Campo obrigatório")]
[Display(Name = "Nome completo")]
public string Name { get; set; }

[Required(ErrorMessage = "Campo é obrigatório")]
[StringLength(100, ErrorMessage = "A {0} deve ter pelo menos {2} characteres.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Senha")]
public string Password { get; set; }

[DataType(DataType.Password)]
[Display(Name = "Confirmar senha")]
[Compare("Password", ErrorMessage = "A nova senha e a confirmação da senha não conincidem.")]
public string ConfirmPassword { get; set; }

[Required(ErrorMessage = "Campo obrigatório")]
[Display(Name = "Convidado")]
[UIHint("IsGuest")]
public bool IsGuest { get; set; }

[RequiredIf("IsGuest", true, ErrorMessage = "Campo é obrigatório")]
[ScaffoldColumn(false)]
public string CodeGuest { get; set; }

Свойство: CodeGuest не должнобыть созданным помощником @Html.EditorForModel().(Я хотел бы создать его вручную.)

Читая в Интернете, я нашел несколько моментов и хотел бы узнать разницу.

Помня, что я не хочу, чтобы это было скрыто,это поле будет создано только этим

EditorTemplates (IsGuest.cshtml):

@using BindSolution.AndMarried.Model;
@model BindSolution.AndMarried.Models.RegisterModel
@Html.EditorFor(e => e.IsGuest)
<span>TESTE</span>
@Html.EditorFor(e => e.CodeGuest)

Вопрос:

В чем разница между:[ScaffoldColumn (false)] и [Display (AutoGenerateField = false)]

Почему я не могу сделать [Display (AutoGenerateField = false)] have the effect: 'do not generate the HTML field when calling@Html.EditorForModel () `.

Ответы [ 2 ]

2 голосов
/ 25 марта 2013

Я тоже хотел узнать разницу, следующее от MSDN - http://msdn.microsoft.com/en-us/library/dd411771(v=vs.95).aspx

"AutoGenerateField - значение, указывающее, включено ли поле в автоматическую генерацию элементов пользовательского интерфейса, таких как столбцы. Это значение используется элементом управления DataGrid."

Из этого следует, что это конкретное свойство предназначено только для DataGrid.

2 голосов
/ 03 марта 2013

Вспомогательные методы EditorForModel() и DisplayForModel() Html принимают решение о просмотре свойств текущей модели на основе ViewData.ModelMetadata.Значение по умолчанию DataAnnotationsModelMetadataProvider устанавливает свойства ModelMetadata на основе атрибутов DataAnnotation.

ScaffoldColumnAttribute.Scaffold влияет на два свойства ModelMetadata, то есть 'ShowForDisplay' и 'ShowForEdit'.

DisplayAttribute не влияет на два вышеупомянутых свойства ModelMetadata.

Вот почему эти два атрибута не оказывают одинакового влияния на генерацию HTML.

...