6

Per eseguire il rendering HTML nella mia vista di modifica, utilizzo l'helper @Html.EditorForModel().differenza tra: [ScaffoldColumn (false)] e [Display (AutoGenerateField = false)]

Il mio modello:

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

Proprietà: CodeGuest non dovrebbe essere creato dal aiutante @Html.EditorForModel(). (Vorrei creare manualmente.)

Leggendo su Internet, ho trovato diversi punti e vorrei sapere la differenza.

Ricordando che io non voglio che sia nascosto, questo campo verrà creato solo da questo

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) 

Domanda:

Cosa è la differenza tra: [ScaffoldColumn (false)] e [Display (AutoGenerateField = false)]

Perché non può Faccio [Display (AutoGenerateField = false)] have the effect: 'do not generate the HTML field when calling @ Html.EditorForModel() `.

risposta

2

Il EditorForModel() e DisplayForModel() I metodi di helper HTML consentono di prendere decisioni sulla visualizzazione rendering delle proprietà del modello corrente in base allo ViewData.ModelMetadata. L'impostazione predefinita DataAnnotationsModelMetadataProvider imposta le proprietà di ModelMetadata in base agli attributi DataAnnotation.

ScaffoldColumnAttribute.Scaffold interessa due proprietà di ModelMetadata, ad esempio "ShowForDisplay" e "ShowForEdit".

DisplayAttribute non influisce sulle due proprietà precedenti di ModelMetadata.

Ecco perché questi due attributi non hanno lo stesso effetto sulla generazione di Html.

1

Volevo anche conoscere la differenza, il seguente è da MSDN - http://msdn.microsoft.com/en-us/library/dd411771(v=vs.95).aspx

"AutoGenerateField -. Un valore che indica se il campo è incluso nella generazione automatica di elementi dell'interfaccia utente come le colonne Questo valore è usato dal controllo DataGrid. "

Da ciò risulta che questa particolare proprietà è destinata solo a DataGrid.

Problemi correlati