IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Diskusia – 7. diel - Spracovanie dát a validácia v ASP.NET Core MVC

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
Jakub Ondrák:30.6.2018 16:51

Ahoj, ta bublina na poslením obrázku se mi nezobrazuje. Když dám písmeno, tak po opuštění toho pole zmizí. Číslice zůstávají. Možná to bude verzí Windowsů a/nebo IE. Mám Win7

 
Odpovedať
30.6.2018 16:51
Avatar
Martin Petrovaj
Tvůrce
Avatar
Odpovedá na Jakub Ondrák
Martin Petrovaj:30.6.2018 16:59

Ahoj, najpravdepodob­nejšia možnosť je tá, že to je záležitosť prehliadača. Ako sa píše v článku, niektoré validačné hlášky a upozornenia si momentálne určuje browser takpovediac sám ("Browsers choose their own error messages and display those errors as they wish, however the jQuery Validation Unobtrusive package can override the messages and display them consistently with others." [1). Screenshoty sú z prehliadača Chrome, je možné, že IE (a iné browsery) to majú trošičku inak, nejaká validácia by ale stále mala fungovať. :-)

Editované 30.6.2018 16:59
Odpovedať
30.6.2018 16:59
if (this.motto == "") { throw new NotImplementedException(); }
Avatar
Odpovedá na Martin Petrovaj
Jakub Ondrák:30.6.2018 17:04

Jasný, rozumím :-). Teď jsem to zkusil ve Firofoxu, a je to jiný.

Jinak ta validační hláška, že mám zadat číslo od 1 do 100, ta se vždy zobrazí a tím polem? Dá se umístit jinam? Formátovat?

 
Odpovedať
30.6.2018 17:04
Avatar
Martin Petrovaj
Tvůrce
Avatar
Odpovedá na Jakub Ondrák
Martin Petrovaj:30.6.2018 17:13

Validačná hláška by sa mala zobraziť tam, kde je v (CS)HTML kóde umiestnený span pre validačné správy:

<span asp-validation-for="Cislo1" class="text-danger"></span>

Čo sa týka formátovania hlášky samotnej, ak využívaš už hotové atribúty z System.Componen­tModel.DataAn­notations (napr. Required, Range, DataType atď), tak tá hláška je onen ErrorMessage, ktorý si môžeš upraviť podľa seba:

[Range(1, 100, ErrorMessage = "Zadejte prosím číslo od 1 do 100.")]

Priznám sa, že som nemal zatiaľ čas ani potrebu skúšať, ako by sa to spravilo, ak by si nad tým chcel nejakú väčšiu kontrolu (napr. aby bola správa dynamická - vypisovala niečo iné napr. v závislosti od nejakej premennej, alebo aby ErrorMessage obsahoval HTML markup), asi by som sa s tým skúsil najprv trochu pohrať, čo všetko to vie out-of-the-box a ak by mi niečo zásadné chýbalo, asi by som išiel do svojho vlastného atribútu.

Odpovedať
30.6.2018 17:13
if (this.motto == "") { throw new NotImplementedException(); }
Avatar
Odpovedá na Martin Petrovaj
Jakub Ondrák:30.6.2018 17:16

Jasný, díky za odpověď a taky dobrej článek :-)

 
Odpovedať
30.6.2018 17:16
Avatar
Bebbana
Člen
Avatar
Odpovedá na Martin Petrovaj
Bebbana:13.7.2018 12:40

Možná by to uměl NuGet balíček Foolproof? Zatím nevím, co vše umí, ale použila jsem jej párkrát, třeba při validaci, které výsledek závisel na na hodnotě jiné vlastnosti, možná to jde i s proměnými.

public bool ImageExists { get; set; } = false;

[RequiredIfFalse("ImageExists", ErrorMessage = "Nahrajte prosím obrázek podpisu.")]
[Display(Name = "Podpis")]
public HttpPostedFileBase UploadedImage { get; set; }
...
 
Odpovedať
13.7.2018 12:40
Avatar
Martin Petrovaj
Tvůrce
Avatar
Odpovedá na Bebbana
Martin Petrovaj:13.7.2018 12:57

Foolproof nebol určite zlý, ale už je to dosť starý balíček a navyše nekompatibilný s .NET Core. Samozrejme, sú aj alternatívy, ktoré sú novšie, vo viacerých ohľadoch lepšie a majú aj Core verziu - napr. FluentValidation :-)

V seriáli o tvorbe eshopu, ktorý je vo fáze dokončovania bude dokonca ukázané, ako si vlastné validačné atribúty podobné tým z Foolproof pomocou reflexie napísať ;-)

Odpovedať
13.7.2018 12:57
if (this.motto == "") { throw new NotImplementedException(); }
Avatar
Bebbana
Člen
Avatar
Odpovedá na Martin Petrovaj
Bebbana:13.7.2018 14:44

Díky za tip, s .NET Core pracuju jen chvíli, takže zatím nemám takové zkušenosti.

 
Odpovedať
13.7.2018 14:44
Avatar
Jiří Láska:26.1.2021 10:53

Ahoj,
když stáhnu projekt pod článkem a otevřu ho ve Visual studiu, tak je všechen kód ve všech souborech červeně podtržený a nic nefunguje. Jak mám tento problém vyřešit, a v čem vůbec ten problém spočívá?

 
Odpovedať
26.1.2021 10:53
Avatar
Odpovedá na Jiří Láska
Vašek Doškář:18.4.2021 10:54

Ahojda, nezkoušel jsi aktualizovat VS, případně ASP.NET?

Odpovedať
18.4.2021 10:54
Bez cíle není úspěchu.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!