problem s validaci datumu na client side, browser Chrome   otázka

ASP.NET WebForms, ASP.NET MVC, .NET Tips

Dobry den, dopredu se omlouvam, ze se mozna nebudu vyjadrovat uplne spravne ve Vasi programatorske hantyrce, povolanim jsem neco diametralne jineho...

vytvarim webove stranky, kde si uzivatele planujou svoje pozadavky pro svoje "klienty", v asp.net mvc..asi tyden se trapim se zadanim datumu narozeni klienta.. do db klientu se krome jmena a jinych drobnosti uklada i datum narozeni..

ve viewmodelu dana propetie vypada takhle:

[Required,Display(Name = "Datum narození")]
[DisplayFormat(DataFormatString = "{0:dd.MM.yyyy}", ApplyFormatInEditMode = true)]        
public DateTime? BirthDate { set; get; }

view pro tuto prop. mam elemet:

@Html.TextBoxFor(m => m.BirthDate, String.Format("{0:yyyy-MM-dd}", (Model.BirthDate.HasValue) ? Model.BirthDate.Value.ToShortDateString() : string.Empty))

vysledek na konzole:

<input data-val="true" data-val-date="The field Datum narození must be a date." data-val-required="Pole Datum narození je povinné." id="BirthDate" name="BirthDate" type="text" value="">

a problem je, ze kdyz do tohoto inuputu rucne zadam datum treba 12.6.1933 je vsechno v "poradku", kdyz zadam 13.6.1933 validator se ozve - ze pry to neni datum..po tydnu googleni a hledani jsem nenasel reseni, ktere by mi pomohlo..

vim, ze je to kvuli tomu, ze validator bere prvni dve cisla jako mesic, ze je to kvuli validaci na client side, ze tenhle problem neni jenom na prohlizeci chrome..zkousel jsem vsechno mozne, validatory, databindingy..vsecko marne output je furt stejny..validator me nepusti dal..

mohly by jste, prosim napsat nejaky jednoduchy navod jak se dela takovato "custom format validation on client side"...

P.S. vsechny potrebne knihovny snad mam v projektu:

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                        "~/Scripts/jquery.validate*",
                        "~/Scripts/jquery.custom.validator.js",
                        "~/Scripts/jquery.unobtrusive*"
                        ));
i web.config je nastaveny:


xml|

<globalization culture="cs-CZ" enableClientBasedCulture="true" uiCulture="cs-CZ" />


snad jsem vam dodal vsechny potrebne informace, fakt si s tim nevim rady...
Predem moc dekuji...L.C.
nahlásit spamnahlásit spam 0 odpovědětodpovědět

No, jednou jsem to řešil taky a vyřešil tak provizorně..

Vypnul jsem validaci na straně klienta a dal jsem k tomu nějaký date picker..

--to je spíš taková nouzovka, už je to dávno, takže do toho už moc nevidím.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

V MVC to bohužel nemám, ale měl jsem to ve WebForms a problém s tím nebyl. Pro datum tam používám DynamicData FieldTemplate, který na klientu používá jQuery UI DatePicker.

V modelu je datum zaveden takto:

[Display(Name = "Požadovaný termin")]
[DataType(DataType.DateTime, ErrorMessage = "Chybný formát požadovaného terminu.")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:d}")]
public DateTime? PozadovanyTermin { get; set; }

DynamicData\FieldTemplates\DateTime_Edit.ascx obsahuje:

<asp:TextBox ID="TextBox1" runat="server" CssClass="DDTextBox datepicker" Text='<%# FieldValueEditString %>'></asp:TextBox>

<asp:CustomValidator runat="server" ID="DateValidator" CssClass="DDControl DDValidator" ControlToValidate="TextBox1" Display="Dynamic" EnableClientScript="false" Enabled="false" OnServerValidate="DateValidator_ServerValidate" />

DynamicData\FieldTemplates\DateTime_Edit.cs obsahuje:

protected void DateValidator_ServerValidate(object source, ServerValidateEventArgs args)
{
    DateTime dummyResult;
    args.IsValid = DateTime.TryParse(args.Value, out dummyResult);
}

tj. provádí se pouze serverová validace (klientská ne).

jQuery UI DatePicker je použit podle článku:

http://www.dotnetportal.cz/blogy/15/Null...

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback