6

Pour rendre HTML dans ma vue d'édition, j'utilise l'assistant @Html.EditorForModel().différence entre: [ScaffoldColumn (false)] et [Display (AutoGenerateField = false)]

Mon modèle:

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

Propriété: CodeGuest ne doit pas être créé par l'aide @Html.EditorForModel(). (Je voudrais le créer manuellement.)

En lisant sur Internet, j'ai trouvé plusieurs points et j'aimerais connaître la différence.

Se souvenant que je ne veux pas qu'il soit caché, ce champ ne sera créé par cette

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) 

Question:

Qu'est-ce que est la différence entre: [ScaffoldColumn (false)] et [Display (AutoGenerateField = false)]

Pourquoi pas Je fais [Display (AutoGenerateField = false)] have the effect: 'do not generate the HTML field when calling @ Html.EditorForModel() `.

Répondre

2

Les méthodes d'assistance Html EditorForModel() et DisplayForModel() prennent la décision de rendre la vue des propriétés du modèle actuel basé sur le ViewData.ModelMetadata. La valeur par défaut DataAnnotationsModelMetadataProvider définit les propriétés de ModelMetadata en fonction des attributs DataAnnotation.

ScaffoldColumnAttribute.Scaffold affecte deux propriétés de ModelMetadata, à savoir 'ShowForDisplay' et 'ShowForEdit'.

DisplayAttribute n'affecte pas les deux propriétés ci-dessus de ModelMetadata.

C'est pourquoi ces deux attributs n'ont pas le même effet sur la génération de code HTML.

1

Je voulais aussi connaître la différence, ce qui suit est de MSDN - http://msdn.microsoft.com/en-us/library/dd411771(v=vs.95).aspx

« AutoGenerateField -. Une valeur qui indique si le champ est inclus dans la génération automatique des éléments d'interface utilisateur tels que des colonnes Cette valeur est utilisé par le contrôle DataGrid. " À partir de là, il semble que cette propriété particulière est destinée uniquement à DataGrid.

Questions connexes