Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

[MVC2 - C#] - Custom validacija

[es] :: .NET :: ASP.NET :: [MVC2 - C#] - Custom validacija

[ Pregleda: 2983 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

wex-alpha
Sarajevo

Član broj: 7580
Poruke: 845
*.dynamic.telemach.ba.



+13 Profil

icon [MVC2 - C#] - Custom validacija15.01.2012. u 18:17 - pre 148 meseci
Jel ovo jedini nacin custom validacije? (radi dodouse):

Code:

public class ProradiAttribute : ValidationAttribute
    {
       
        public string Naziv { get; set; }
        public override bool IsValid(object value)
        {
            if (value == null)
            {
                return true;
            }
            var provjera = (string)value;
            if (provjera == Naziv)
            {
                return false;
            }
            else
                return true;
        }
    }


Koristenje iste:
Code:

 [Required(ErrorMessage = "You must enter a name")]
        [Proradi(Naziv="kur*c", ErrorMessage="Losa Rijec")]
        public string Name { get; set; }





 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: [MVC2 - C#] - Custom validacija15.01.2012. u 18:32 - pre 148 meseci
Mozes i da implementiras IValidateObject u klasi koja se samoproverava. Ovo se razlikuje utoliko sto se ne proverava property nego ceo objekat i sto je rezultat provere IEnumerable<ValidationResult> umesto jednostavnog bool.
 
Odgovor na temu

wex-alpha
Sarajevo

Član broj: 7580
Poruke: 845
*.dynamic.telemach.ba.



+13 Profil

icon Re: [MVC2 - C#] - Custom validacija15.01.2012. u 18:36 - pre 148 meseci
Koji pristup savjetujes?


 
Odgovor na temu

wex-alpha
Sarajevo

Član broj: 7580
Poruke: 845
*.dynamic.telemach.ba.



+13 Profil

icon Re: [MVC2 - C#] - Custom validacija15.01.2012. u 19:11 - pre 148 meseci
Donedavno sam radio u Rubiju (Rails). I zaista, ne da je mnogo laksi... nego razvaljuje.

Bez osnovnog poznavanja jezika/frameworka, neko da pise WebApp u *.NET-u, nije moguce.

Dok u rubiju, vrlo je moguce poceti koristiti Rails (Framework), a usput uciti sam Ruby.

Znam, sve ima svoje prednosti i mane, kao i svaka tehnologija :)

Jedan primjer koji mi upada u oci je Uniqueness podatka... recimo e-maila (e-mail has alreadu been registered).

Ne zelim ni pocinjati kako to ide u MVC2, a u Rubiju (u modelu, naravno) se samo stavi sljedece: validates_uniqueness_of :email... i to je to.

Kako bih bio sretan da kreatori MVC-a malo detaljnije pogledaju konkurenciju i uzmu par stvari od njih. Znam da jesu po nekim pitanjima, ali bilo bi super da jos usvoje detalja (npr. uniqueness_of data)

 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: [MVC2 - C#] - Custom validacija15.01.2012. u 19:29 - pre 148 meseci
Citat:
wex-alpha: Koji pristup savjetujes?

Zavisi za sta ti treba. Sa atributima validiras jedan property dok sa iValidateObject validiras ceo objekat. To ti je najbiniji deo pa sta ti vise odgovara, to koristis.
Inace, ako ti validacija jednog property-a zavisi od drugog, onda ne mozes atributom.

U sustini, neka podela (po mom misljenju, ne kao opste pravilo) bi bila da se atributom radi validacija samog podatka koji se dodeljuje (da li je broj, da li je ispravan oblik za e-mail, ogranicenje duzeine stringa i sl.) dok se sa IValidateObject-om radi business logic validacija (da je end date veci od start date, da osoba sa tim SSN vec postoji u bazi i sl.).
 
Odgovor na temu

Dejan Carić
Oslo, Norway

Član broj: 230976
Poruke: 232
*.dynamic.isp.telekom.rs.

Sajt: www.dcaric.com


+26 Profil

icon Re: [MVC2 - C#] - Custom validacija15.01.2012. u 22:21 - pre 148 meseci
Citat:
wex-alpha:Ne zelim ni pocinjati kako to ide u MVC2, a u Rubiju (u modelu, naravno) se samo stavi sljedece: validates_uniqueness_of :email... i to je to.

Na koji način ovo radi? Kako framework zna da li sam objekat ručno napravio ili sam ga dovukao iz baze, xml fajla, web servisa ili nekog desetog data source-a i pod kojim nazivom je to polje tamo mapirano?

Jedan od alternativnih framework-a za validaciju je i Fluent Validation. Dosta je zanimljiv, ali nije savšren. Npr. za custom validatore se ne generiše klijentska validacija, ali radi se na tome :)

 
Odgovor na temu

wex-alpha
Sarajevo

Član broj: 7580
Poruke: 845
*.dynamic.telemach.ba.



+13 Profil

icon Re: [MVC2 - C#] - Custom validacija15.01.2012. u 22:33 - pre 148 meseci
Citat:
Dejan Carić: Na koji način ovo radi? Kako framework zna da li sam objekat ručno napravio ili sam ga dovukao iz baze, xml fajla, web servisa ili nekog desetog data source-a i pod kojim nazivom je to polje tamo mapirano?


Gotovo svaka knjiga o Rubiju koristi rijec "Magic". Ne znam kako zna... smao znam da zna i to radi :). Pravilo je da me i ne treba zanimati kako radi :P

Evo primjera koda za validaciju iz modela (ukljucuje i custom validaciju). Validacija iznimno lagana za primjeniti. :

title, description, image i price su polja u bazi koja su vec mapirana. Ono sto dolazi iz web forme se validira na ovaj nacin.

Code:

validates_presence_of :title, :description, :image_url
validates_numericality_of :price  
validate :price_must_be_at_least_a_cent //pozovi metodu koja dole definisana
validates_uniqueness_of :title

validates_format_of :image_url,
:with => %r{\.(gif|jpg|png)$}i,
:message => 'must be a URL for GIF, JPG ' +
'or PNG image.(gif|jpg|png)'
  
  
  
protected
def price_must_be_at_least_a_cent
errors.add(:price, 'should be at least 0.01' ) if price.nil? ||
price < 0.01
end



Sto se tice provjere unikatnosti nekog naziva, RoR to sam radi. Model dovuce sve iz baze i sam odradi provjeru, bez da ja napisem i jednu liniju koda.

Pocetnik sam u ROR-u, naravno... tako da je moguce da ne iznosim tacne cinejnice :)


 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: [MVC2 - C#] - Custom validacija15.01.2012. u 23:07 - pre 148 meseci
Uzasi apstrakcije
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

vbvlada
Petrović Vladimir
Beograd

Član broj: 59233
Poruke: 209
*.amres.ac.rs.



Profil

icon Re: [MVC2 - C#] - Custom validacija01.02.2012. u 08:46 - pre 147 meseci
Možda nije MVC2 već MVC3, ali ima veze sa validacijom, a možda je čak isto tako i u MVC2, ne znam, jer web programiranje radim tek drugu nedelju

Situacija je sledeća:
- Odrađena validacija View modela preko DataAnnotations-a, dakle neke proste stvari (Required, MaxLength, Remote...)
- Ne znam da li je dobar pristup, ali voleo bih da na akciju kontrolera "Unos" koja nakon Submit-a prima View model, odradim malo komplikovaniju validaciju, da mi neko polje zavisi od drugih polja, i tako dalje.
Evo primera kako izgleda View model:
Code:

public class UnosModel
{
     public List<Sifarnik1> sifarnk1{get; set;}
     public List<Sifarnik2> sifarnk2{get; set;}
     public Kupac kupac{get; set;} // kupac recimo ima ime, prezime, telefon...
     public List<PorudzbinaStavka> stavke{get; set;}
}

Dakle, ovaj View model služi da prikažem šifarnike u DropDown-u, ali i da pokupim podatke sa View-a kako bih ih prosledio kontroleru, tj. akciji Unos:
Code:

//HttpPost atribut
public ActionResult Unos(UnosModel model)
{
    //primer validacije na ovom mestu:
    if(model.kupac.ime.Length<3)
     {
         ModelState.AddModelError("Greška", "Neispravno uneto ime");
         return View("Unos", model); // ovo mi je jako bitno: vraćam se na obrazac za unos sa modelom koji već ima podatke!!
     }
}


Moja želja je da, kao u primeru, uradim validaciju i, ako nešto ne valja, da se vratim na View prosleđujući isti model koji ima podatke, kako bi korisnik pročitao šta ne valja i ispravio greške.
Problem su ovi šifarnici: Ja njih ne dobijam u ovoj instanci "model, liste su prazne". Ukratko, želim da se vratim na View i da mi u DropDown listama budu podaci, i da bude selektovan onaj koji je bio pre pokušaja snimanja.
Imam nekoliko varijanti da ovo rešim, ali uvek negde malo zapnem, pa bi mi koristio savet kako je najbolje da se to odradi.
A vi,kako 'te?
 
Odgovor na temu

vbvlada
Petrović Vladimir
Beograd

Član broj: 59233
Poruke: 209
*.amres.ac.rs.



Profil

icon Re: [MVC2 - C#] - Custom validacija02.02.2012. u 10:39 - pre 147 meseci
Nekako sam se snašao:
Pošto svi šifarnici u bazi imaju polja ID i Naziv, napravio sam klasu SifarnikEntity(Id, Naziv, (bool)Selected), i u modelu imam Liste tih tipova umesto onih, recimo u Entity data modelu.
U View-u u petlji za generisanje "select" elementa proveravam da li je tekuci "selected" i postavljam ga ako jeste.
Za ostale nemam problema, oni se "šetaju" od kontrolera do View-a i nazad sve dok ne prođu validaciju :-)
A vi,kako 'te?
 
Odgovor na temu

[es] :: .NET :: ASP.NET :: [MVC2 - C#] - Custom validacija

[ Pregleda: 2983 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.