web-dev-qa-db-fra.com

Mettre en forme la date dans View dans ASP.NET Core MVC

J'ai un problème concernant la conversion de la date/heure à ce jour à l'aide d'un modèle.

Modèle de la bibliothèque de classes

public partial class LoanContract
{
    [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]
    public DateTime LoanDateStart { get; set; }
}

Modèle du projet

public class ModelLoan
{
    public LoanContract loanContract { get; set; }
}

Code dans le contrôleur

 myList.loanContract = new LoanContract { LoanDateStart = DateTime.Today };

Voir:

<input disabled type="date" asp-for="loanContract.LoanDateStart" id="dpDateNow" class="form-control" />

Il montre comme ceci: yyyy-MM-dd Ce que je veux réaliser, c'est que je veux le changer en MM/dd/yyyy. J'ai essayé d'utiliser .ToString("MM/dd/yyyy") mais cela ne fonctionne pas.

8
Alvin Quezon

Je pense que c'est un bogue pour les caractères d'échappement dateformat sur le noyau dotnet. Aucune des solutions ci-dessus n'a fonctionné pour moi. Seule cette méthode a résolu mon problème. pourquoi DateTime.ToString ("jj/MM/aaaa") me donne jj-MM-aaaa?

[DisplayFormat(DataFormatString = "{0:dd'/'MM'/'yyyy}", ApplyFormatInEditMode = true)]

ou

<input asp-for="DateProperty" asp-format="{0:dd'/'MM'/'yyyy}">
0
twister

Pour ceux qui arrivent ici qui souhaitent changer le format de date d'un modèle dans la vue indépendamment de la classe de modèle (c'est ce à quoi je m'attendais à répondre). Cela fonctionne à la fois dans Razorpages et MVC.

Ajoutez simplement .ToString ("dd/MM/YYYY") à la propriété que vous affichez.

par exemple.

@Model.DateOfBirth.ToString("<Use formatting here>")

C'est très bien si vous ne souhaitez afficher qu'une partie d'une date, par exemple le mois et l'année, mais ailleurs, vous devez afficher le jour et l'heure.

0
Mark Perry

Simple et pratique, utilisez asp-format, exemple:

<input asp-for="MyDate" asp-format="{0:dd/MM/yyyy}" class="form-control" />

Ou:

@Html.TextBoxFor(model => model.MyDate, "{0:dd/MM/yyyy}", new { @class = "form-control" })
0
Matheus Miranda