6

Aby renderować HTML w moim widoku edycji, używam helpera @Html.EditorForModel().Różnica między: [ScaffoldColumn (false)] a [Display (AutoGenerateField = false)]

Mój model:

[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; } 

nieruchomości: CodeGuest nie powinny być tworzone przez pomocnika @Html.EditorForModel(). (Chciałbym stworzyć go ręcznie.)

Czytanie w Internecie, znalazłem kilka punktów i chciałbym poznać różnicę.

pamiętać, że nie ma to być ukryta, to pole zostanie utworzony tylko przez tego

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) 

Pytanie:

Co jest różnica między: [ScaffoldColumn (false)] i [Display (AutoGenerateField = false)]

Dlaczego nie można Tworzę [Display (AutoGenerateField = false)] have the effect: 'do not generate the HTML field when calling @ Html.EditorForModel() `.

Odpowiedz

2

Metody pomocnicze HTML pomagają w wyświetlaniu właściwości bieżącego modelu na podstawie wartości ViewData.ModelMetadata. Domyślna DataAnnotationsModelMetadataProvider ustawia właściwości ModelMetadata na podstawie atrybutów DataAnnotation.

ScaffoldColumnAttribute.Scaffold wpływa na dwie właściwości ModelMetadata, tj. "ShowForDisplay" i "ShowForEdit".

DisplayAttribute nie wpływa na powyższe dwie właściwości ModelMetadata.

Z tego powodu te dwa atrybuty nie mają takiego samego wpływu na generowanie html.

1

Chciałem też, aby znać różnicę, co następuje z MSDN - http://msdn.microsoft.com/en-us/library/dd411771(v=vs.95).aspx

„AutoGenerateField. - Wartość, która wskazuje, czy pole jest włączone automatyczne generowanie elementów interfejsu użytkownika, takie jak kolumny wartość ta jest używany przez formant DataGrid. "

Z tego wynika, że ​​ta konkretna właściwość jest przeznaczona tylko dla DataGrid.