Wie bekomme ich das aktuelle Datum in ASP.NET Core-MVC?
ich bin neu mit .net-core-also, was ich getan ist das erstellen von Artikel mit Titel, Datum, Beschreibung, Bild
dies ist mein Modell
public class Article
{
[Key]
public int Id { get; set; }
[StringLength(200)]
[Required(ErrorMessage = "Required")]
public string ArticleTitle { get; set; }
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime ArticleDate { get; set; }
[DataType(DataType.MultilineText)]
public string ArticleDescriotion { get; set; }
public string ArticleImage { get; set; }
}
dies ist der controller
public IActionResult CreateArticle()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult CreateArticle(Article article)
{
if (ModelState.IsValid)
{
context.Articales.Add(article);
context.SaveChanges();
return RedirectToAction("Index");
}
return View(article);
}
dies ist die Ansicht
<div class="form-group">
<label asp-for="ArticleDate" class="col-md-4 control-label" ></label>
<input asp-for="ArticleDate" class="form-control">
</div>
Ich kann geben Sie das Datum manuell ein und es funktioniert gut, aber ich will es laden, wird das aktuelle Datum automatisch.
- Also, was genau haben Sie Problem mit?
- Klar, zu der Zeit, die Sie wollen. Ist das die aktuelle Zeit auf dem server, dass die Erzeugung der Webseite oder dieser die aktuelle Uhrzeit des Benutzers, das anzeigen der Webseite?
- ich nicht haben Problem als Fehler, wie ich mittlerweile geben Sie das Datum manuell ein, aber ich will es Holen Sie sich das aktuelle Datum (Datum.jetzt )erscheinen automatisch in der Bezeichnung und, wenn Sie auf die Schaltfläche erstellen es dauern, das Datum eingefügt und in die DB
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie möchten, dass die Ansicht zu laden, die mit der aktuellen DateTime -, könnten Sie es so:
Oder, könnte passieren das Modell an den view direkt:
Beachten Sie, dass durch die Verwendung
DateTime.Now
, das Datum möglicherweise nicht werden das Datum der client den Besuch der Seite (wegen den Zeitzonen). Wenn Ihre Benutzer und die server sind alle in der gleichen Zeitzone, und das wäre nur in Ordnung.Könnten Sie
DateTime.UtcNow
wenn Sie möchten, dass das UTC-Datum anstelle des Datums der server läuft die Anwendung, aber das bedeutet nicht immer helfen. Würden Sie brauchen, um zu laden, das Datum in der client - (ich.e per JavaScript), wenn Sie wollen, um den tatsächlichen Zeitpunkt für jeden Kunden.Werde ich vorschlagen, Sie jedoch, um nicht verwenden Entitäten (eine Klasse, die eine Tabelle) direkt. Blick auf mit ViewModels.
Mit Ihrem update-ich sehe, was das problem ist. Die
LabelTagHelper
(was können Sie verwendenasp-for
im<label>
), macht die Beschreibung der Immobilie, nicht Ihr Wert. Dies ist, weil die Etiketten sind gedacht für die, die den Inhalt beschreiben, der Ihnen folgt, nicht deren Inhalt.DateTime.Now
wird die Zeitzone des Servers. Das ist fast immer eine schlechte Idee.DateTime Verwenden.UtcNow um das aktuelle Datum und die aktuelle Zeit auf dem aktuellen computer, ausgedrückt in UTC (Universal Time Coordinated)
Modell
Ansicht
dies ist die Arbeit bei mir perfekt danke allen speziell für @Camilo Terevinto
Ich kämpfen, dies zu tun und dachte, ich würde post diese Antwort, wie ich gerade herausgefunden und ich konnte nicht mit den anderen Methoden zu arbeiten.
Wenn mithilfe der standard ASP.NET Identity und das erstellen von benutzerdefinierten Daten-Modell können Sie dann überschreiben die Standard-Werte in der OnPostAsync-Methode der page-Modell:
Definieren die Werte hier eher als auf die form bedeutet, es ist nicht möglich für Menschen, die über die Daten posten.
Also die Methode sieht nun folgendermaßen aus:
Dann können Sie entfernen diese aus dem Formular auf der Seite (wenn Sie das Feld als erforderlich, werden Ihre Daten-Modell, dann muss es bleiben, auf dem Formular als hidden-Feld ein Wert zugewiesen werden, andernfalls wird das Formular nicht abgeschickt - ich habe gerade den Wert für X als bin überschreiben Sie sowieso):
Hoffe, das hilft anderen.
Robin