Perché il modello MVC3 incluso di Microsoft non segue i modelli grassi, i controller skinny?

5

Dal modello incorporato in Microsoft per MVC3

Il modello è estremamente sottile, praticamente privo di codice.

Modello

public class RegisterModel
{
    [Required]
    [Display(Name = "User name")]
    public string UserName { get; set; }

    [Required]
    [DataType(DataType.EmailAddress)]
    [Display(Name = "Email address")]
    public string Email { get; set; }

    [Required]
    [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
    [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; }
}

Mentre il Controller sembra invece grasso, facendo più semplice routing ...

Regolatore

[HttpPost]
[AllowAnonymous]
public ActionResult Register(RegisterModel model)
{
    if (ModelState.IsValid)
    {
        // Attempt to register the user
        MembershipCreateStatus createStatus;
        Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus);

        if (createStatus == MembershipCreateStatus.Success)
        {
            FormsAuthentication.SetAuthCookie(model.UserName, false /* createPersistentCookie */);
            return RedirectToAction("Index", "Home");
        }
        else
        {
            ModelState.AddModelError("", ErrorCodeToString(createStatus));
        }
    }

    // If we got this far, something failed, redisplay form
    return View(model);
}
    
posta MVCylon 01.06.2011 - 21:30
fonte

2 risposte

6

Tutto ciò che il controller sta facendo è il suo lavoro, è piuttosto semplice. La logica aziendale non verrà generata per te. I modelli si ingrassano quando si incapsulano funzionalità utili in essi; non puoi aspettarti di vederlo da un modello.

    
risposta data 02.06.2011 - 02:07
fonte
0

Sono curioso di sapere come pensi che il controller possa essere messo a dieta? Onestamente non riesco a vedere nulla che possa trasferirsi nel modello senza violare SRP.

    
risposta data 20.09.2011 - 17:07
fonte

Leggi altre domande sui tag