Diskuze: ASP.NET MVC - Time stamp
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 10 zpráv z 10.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Pokus pouzivas C# v6 (Visual studio 2015), je mozne u kazde vlastnosti nastavit default value pri inicializaci:
public DateTime CasovaZnamka { get; set; } = DateTime.Now;
Pouzivam VS 15 a u projektu mam nastaven .NET 4.5.2, ale nevim, zda to je C# 6. Jakmile budu doma, urcite to zkusim.
Mam jeste dotaz. Pokud by mi tento zpusob sel, ulozi se tedy vzdy aktualni
datum i pri editaci, ze? Ja bych to chtel mit formou, jako je to na
zpravodajskych serverech:
Vytvoreno 24.1.2015. (Upraveno 27.2.2015).
Zkratka, vytvorim zaznam -> ulozi se aktualni datum. Edituji zaznam -> datum vytvoreni zustava nezmeneno, prida se pouze datum upravy.
Ve VS 15 je C# 6 standardně.
Aha, v tom případě na tu počáteční inicializaci zapomeň,ta se tedy
nehodí pro Tvůj případ. Pokud chceš udržovat údaje o datumu stylem
Vytvořeno/upraveno, vytvořil bych vlastnosti dvě.
Jednu jako DatumVytvoreni a druhou jako DatumZmeny.
Ano, to vse vim, ale problem je ten, ze kdyz chci editovat zaznam, musim znovu vyplnit datum vytvoreni, viz model:
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
[Display(Name = "Přesné datum")]
public DateTime DateTime { get; set; }
To znamena, ze kdyz kliknu na editaci zaznamu, tak nemuzu jen tak dat ulozit, protoze musim znovu zadat ono datum. Ja ale chci, aby to datum se vyplnilo jako ostatni pole a ja do nej nemusel zasahovat, kdyz to neni potreba...
Datum vytvoření při editaci vůbec nezobrazuj a po odeslání formuláře si jej doplň z DB podle Id editovaného záznamu (samozřejmě ještě před uložením změn).
Vůbec se mi nedaří vytahnout to datum z databaze pred jeho ulozenim. Mohl bys mi, prosimte, poradit? Prikladam akci Edit k nahlednuti:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "IdKniha,NazevKniha,AutorKniha,RokVydaniKniha,DatumVytvoreni,PredmluvaKniha,ObsahKniha,UrlObrazekKniha,IsAvailable")] Kniha kniha)
{
try
{
if (ModelState.IsValid)
{
db.Entry(kniha).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
}
catch (DataException /* dex */)
{
//Log the error (uncomment dex variable name and add a line here to write a log.
ModelState.AddModelError("", "Nedošlo k uložení. Kontaktujte administrátora!");
}
return this.View(kniha);
}
Ta moje rada asi nebyla nejlepší Asi by to tak šlo, ale mnohem jednodušší by mělo být mít to DatumVytvoření v editačním formuláři jako skryté pole (podobně jako IdKniha) a pak bys asi nemusel nic z DB doplňovat...
Super. Dekuji moc. Nakonec to bylo nejlepsi reseni meho problemu. To me mohlo napadnout.
Zobrazeno 10 zpráv z 10.