Klávesové zkratky na tomto webu - rozšířené Na obsah stránky

Užití repository v řadičích

10.18 - 25. ledna 2009 | ASP.NET 2.0

Dost už bylo infrastruktury, pojďme si ji trochu užít! :) Dneska si ukážeme jak používat naší infrastrukturu, která by nám měla spoustu věcí usnadnit. Proto jí vlastně tady tvořím.

Dependency injection a bindování modelu

Vytvoříme si řadič, který bude pracovat řekněme s uživateli – to je taková věc, která je nutná snad v každé aplikaci. Ruku na srdce, aplikace bez uživatelů je tak trochu k ničemu. Tak pojďme na to!

[HandleErrors]
public class UsersController : System.Web.Mvc.Controller {

  private IUsersRepository _usersRepository;

  public UsersController(IUsersRepository usersRepository) {
    _usersRepository = usersRepository;
  }

  [ActionName("Rest")]
  [AcceptVerbs(HttpVerbs.Post)]
  public ActionResult Create(FormCollection forms) {

    var user = new User();
    if (ModelState.IsValid == false) {
      throw new ValidationException();
    }

    UpdateModel(user, forms.ToValueProvider());
    _usersRepository.Save(user);

    return Json(user);
  }
}

Krátké a úderné. Jde o klasický řadič, který má závislost na repository uživatelů. Tuto závislost si nechává nainjektovat přes konstruktor. O její životní cyklus se nestará, to řeší IoC kontejner. Pak tu máme akci, která zpracovává POST dotazy řekněme na URL /Users, to teď není podstatné. Tato akce by měla vytvořit nového uživatele z dat, která přišla v POSTu (FormCollection).

Pokud nejsou data v pořádku, tak vyhodíme validační výjimku. O to, jak se tato data mapují na model uživatele, se opět řadič nestará, to je věc model binderu. Pokračujeme dále k uložení uživatele, někam. Kam a jakým způsobem je řadiči opět šumák, to je starost repository. Nakonec pošleme zpátky hotového uživatele jako JSON objekt.

A to je pro dnešek vše… :)

Komentáře RSS

  1.  

    eMu

    11.49 - 25. ledna 2009 | #

    Hezke, skoda ze to takhle neumim, tedy nepouzivam.

  2.  

    Petr F

    21.13 - 25. ledna 2009 | #

    Tento komentář bude naprosto OT. Z nějakého důvodu se mi na tomto webu nezobrazuje diakritika. Některá písmenka ano a jiná ne. Děje se to v prohlížečích postavených na KHTML, pokud je chyba v nich, tak už mlčím. Podíval jsem se do zdrojáku stránky a tam diakritika je, takže je to jen problém s vykreslováním. Stejně se chová ještě web DGX, na žádný jiný jsem nenarazil. Myslíte, že je šance to opravit? Je velmi otravné číst si vše v RSS čtečce a jen Vaše články si otvírat ve Firefoxu. (Jen Vaše protože DGX až donedávna téměř přestal psát) Myslím, že se tak děje od začátku Vašeho webu, ale k postěžování si jsem se odhodlal až teď, kdy jste začal psát častěji.

  3.  

    Steve

    22.33 - 28. ledna 2009 | #

    Skutečně krátké u úderné. Děkuji i za předchozí články. Btw. jak to vypadá se svn repository…? ;-)

  4.  

    Aleš Roubíček

    00.51 - 29. ledna 2009 | #

    SVN repository je připravená na codeplexu, jen ještě přemýšlím, jak tam nakomitovat revize které mám ve své lokální repository. Na codeplexu je jen SVN bridge :(

  5.  

    Aleš Roubíček

    10.10 - 29. ledna 2009 | #

    Aktualizoval jsem ukázku, aby byla sladěná s ASP.NET MVC RC – pravděpodobně tedy i s finální verzí. :)

  6.  

    Aleš Roubíček

    10.16 - 30. ledna 2009 | #

    Projekt s ukázkami infrastruktury v ASP.NET MVC najdete na adrese http://www.co­deplex.com/…Com­mits.aspx

Místo pro tvůj názor

Povinné je jméno a komentář, z e-mailu se rozpoznají Gravatary.
Komentář je formátován pomocí Texy! syntaxu.
Například: **tučný text**, *kurzíva*, "text odkazu":adresa.
Internetové adresy jsou převáděny na odkazy.
Na komentáře se můžete odkazovat pomocí [číslo komentáře].

Nový komentář