Controller should not have domain logic. How faithful should one adhere to this tenet?

Posted by Hao on Stack Overflow See other posts from Stack Overflow or by Hao
Published on 2011-01-17T14:48:04Z Indexed on 2011/01/17 14:53 UTC
Read the original article Hit count: 160

Filed under:
|

Quoting from page 49 of Pro ASP.NET MVC book

It is certainly possible to put domain logic into a controller, even though you shouldn’t, just because it seems like it will work anyway. It’s easy to avoid this if you imagine that you have multiple UI technologies (e.g., an ASP.NET MVC application plus a native iPhone application) operating on the same underlying business domain layer (and maybe one day you will!). With this in mind, it’s clear that you don’t want to put domain logic into any of the UI layers.

Why he seems to contradict himself on page 172?

[HttpPost]
public ActionResult CheckOut(Cart cart, ShippingDetails shippingDetails)
{
    // Empty carts can't be checked out
    if (cart.Lines.Count == 0)
        ModelState.AddModelError("Cart", "Sorry, your cart is empty!");

    if (ModelState.IsValid)
    {
        orderSubmitter.SubmitOrder(cart, shippingDetails);
        cart.Clear();
        return View("Completed");
    }
    else // Something was invalid
        return View(shippingDetails);
}

Related to: How to avoid placing domain logic in controller?

© Stack Overflow or respective owner

Related posts about mvc

Related posts about asp.net-mvc-2