Vedo il seguente disegno nel codice che fa parte del progetto di applicazione Web predefinito in Visual Studio:
Una singola classe di modello di dati costruita e decorata con varie annotazioni di convalida dei dati. Ad esempio, esiste una classe RegisterViewModel
simile a questa:
public class RegisterViewModel
{
[Required]
[EmailAddress]
[Display(Name = "Email")]
public string Email { get; set; }
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 8)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirm password")]
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
}
Questa classe ha due scopi:
- È il "modello di vista" o il tipo per la vista che consiste nel modulo html con cui l'utente si registra. I dettagli html e i metadati di validazione jquery possono essere estratti automaticamente dalle annotazioni dei dati della classe.
-
Quando l'utente invia il suo modulo al server, i dati del modulo vengono memorizzati in un oggetto dello stesso tipo; per esempio. in questo caso la firma dell'azione
Register
ha il seguente aspetto:public async Task<ActionResult> Register(RegisterViewModel model)
Tra le altre cose, ciò consente di eseguire la convalida sul lato server utilizzando le stesse annotazioni di dati.
È un modello comune e accettabile? È un progetto per cui lottare quando costruisci le mie forme?