IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Hodnota data z formuláře v ASP.NET Core

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Miroslav Martíšek:5.2.2020 14:14

Ahoj,

mám ASP.NET Core webovou aplikaci, která využívá mimojiné formulář pro zadávání údajů, z nichž jeden představuje datum:

<!-- Date of transaction -->
    <div class="form-group">
        <label class="col-sm-2 control-label form-label" for="transactionDate">Transaction date:</label>
        <div class="col-sm-10">
            <input type="date" class="form-control" id="transactionDate" asp-for=DateOfTransaction data-date-format="yyyy-mm-dd">
        </div>
        <span asp-validation-for="DateOfTransaction" class="text-danger"></span>
    </div>

V modelu jsem vytvořil odpovídající vlastnost:

[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
  [Required(ErrorMessage = "Datum transakce je vyzadovano!")]
  public DateTime DateOfTransaction { get; set; }

Pokud formulář vyplním a odešlu, zobrazí se v celkovém výpisu položek u nově přidané jako datum hodnota 1.1.0001, což je samozřejmě špatně. Jako prohlížeč používám Chrome.
Vyzkoušel jsem přidat anotace do modelu, plus formát data do formuláře (data-date-format="yyyy-mm-dd"), ale bez kladného výsledku :-(

Možná mířím vedle, ale za chybou podle mě stojí rozdílný formát data Chromu a .NETu, což by šlo případně pořešit malým skriptíkem v jQuery. Mohlo by to být ono?

Děkuji moc.

 
Odpovědět
5.2.2020 14:14
Avatar
Tadeáš Burda
Brigádník
Avatar
Odpovídá na Miroslav Martíšek
Tadeáš Burda :5.2.2020 17:22

Skúsil si pri vytvorení instance naplniť tu triedu v konstrukte? Ja to tak robim vždy a s takýmto niečím som problém ešte nemal. Ale tak isto iba hádam.

 
Nahoru Odpovědět
5.2.2020 17:22
Avatar
Tadeáš Burda
Brigádník
Avatar
Odpovídá na Miroslav Martíšek
Tadeáš Burda :5.2.2020 17:24

Zdá sa mi že tie tvoje vložené dáta ignoruje a vytvorí novú inst. Takto by si predal model Viewu už z vytvorenov inst. a on by len prepísal tie dáta v nej.

 
Nahoru Odpovědět
5.2.2020 17:24
Avatar
Jaroslav Smrž
Tvůrce
Avatar
Odpovídá na Miroslav Martíšek
Jaroslav Smrž:5.2.2020 20:35

Nechápu, jak to chceš řešit. Chceš datum zadávat manuálně nebo aby se dosadil automaticky s datem odeslání formuláře? V obou případech bude model:

[Required]
[DataType(DataType.Date)]
[Display(Name ="Datum transakce")]
public DateTime TransactionDate {get;set;}

A v zobrazení pro zadání data pak bude:

<div class="form-group">
        <label asp-for="TransactionDate" class="control-label"></label>
        <input asp-for="TransactionDate" class="form-control" />
        <span asp-validation-for="TransactionDate" class="text-danger"></span>
</div>

A když bys chtěl datum automaticky vložit:

<input type="hidden" asp-for="TransactionDate" value="@DateTime.Now" />

.NET si vše přebere. Až pokud bys chtěl řešit vyhledávání přímo v DB, tak bys potřeboval upravit formát, ale pokud budeš vyhledávat přes View, tak nepotřebuješ nic formátovat.

Editováno 5.2.2020 20:37
Nahoru Odpovědět
5.2.2020 20:35
/* Life runs on code */
Avatar
Jaroslav Smrž
Tvůrce
Avatar
Odpovídá na Miroslav Martíšek
Jaroslav Smrž:5.2.2020 20:57

Nehledě na to, že tady máš chybu:

asp-for=DateOfTransaction data-date-format="yyyy-mm-dd">

Za asp-for= paří uvozovky - asp-for=" "

Nahoru Odpovědět
5.2.2020 20:57
/* Life runs on code */
Avatar
Odpovídá na Jaroslav Smrž
Miroslav Martíšek:6.2.2020 12:56

Uf, sypu si popel na hlavu a nekonečně se kaju, opravdu mi zatopily ty uvozovky %P . Taková školácká chyba. Teď už to šlape jako po másle.

Děkuji moc.

Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět
6.2.2020 12:56
Avatar
Jaroslav Smrž
Tvůrce
Avatar
Odpovídá na Miroslav Martíšek
Jaroslav Smrž:6.2.2020 13:31

:-) To se stane každému.

Nahoru Odpovědět
6.2.2020 13:31
/* Life runs on code */
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.