6

Para renderizar HTML en mi vista de edición, uso el helper @Html.EditorForModel().diferencia entre: [ScaffoldColumn (false)] y [Display (AutoGenerateField = false)]

Mi modelo:

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

propiedad: CodeGuest no debe ser creado por el ayudante @Html.EditorForModel(). (Me gustaría crearlo manualmente.)

Al leer en Internet, encontré varios puntos y me gustaría saber la diferencia.

recordando que no quiero que esté oculto, este campo sólo será creada por esta

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) 

Pregunta:

Lo es la diferencia entre: [ScaffoldColumn (false)] y [Display (AutoGenerateField = false)]

¿Por qué no puedo? Hago [Display (AutoGenerateField = false)] have the effect: 'do not generate the HTML field when calling @ Html.EditorForModel() `.

Respuesta

2

EditorForModel() y DisplayForModel() Html métodos auxiliares toma la decisión de visualizar las propiedades del Modelo actual basado en el ViewData.ModelMetadata. El valor predeterminado DataAnnotationsModelMetadataProvider establece las propiedades de ModelMetadata según los atributos de DataAnnotation.

ScaffoldColumnAttribute.Scaffold afecta a dos propiedades de ModelMetadata es decir 'ShowForDisplay' y 'ShowForEdit'.

DisplayAttribute no afecta a las dos propiedades anteriores de ModelMetadata.

Es por eso que estos dos atributos no tienen el mismo efecto en la generación de Html.

1

También quería saber la diferencia, la siguiente es de MSDN - http://msdn.microsoft.com/en-us/library/dd411771(v=vs.95).aspx

"AutoGenerateField -. Es un valor que indica si el campo se incluye en la generación automática de elementos de interfaz de usuario, tales como columnas Este valor es utilizado por el control DataGrid ".

De esto parece que esta propiedad en particular está hecha solo para DataGrid.

Cuestiones relacionadas