web-dev-qa-db-fra.com

Assigne le format de DateTime avec des annotations de données?

J'ai cet attribut dans mon modèle de vue:

[DataType(DataType.DateTime)]
public DateTime? StartDate { get; set; }

Si je veux afficher la date, ou remplir une zone de texte avec la date, j'ai ceux-ci:

<%: Model.StartDate %>

<%: Html.TextBoxFor(m => m.StartDate) %>

Chaque fois que la date est affichée, elle est affichée comme suit: 01/01/2011 00:00:00

Mais je voudrais seulement afficher 01/01/2011

Est-il possible d'appliquer un format d'affichage avec des annotations de données? Je ne veux pas avoir à aller dans tous les cas où j'affiche une date et ajoute du code pour la formater.

79
Steven

Essayez de le marquer avec:

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

Avez-vous essayé cela? 

[DataType(DataType.Date)]
37
rk1962

Dans mvc 4, vous pouvez facilement le faire comme suit en utilisant TextBoxFor ..

@Html.TextBoxFor(m => m.StartDate, "{0:MM/dd/yyyy}", new { @class = "form-control default-date-picker" })

Il n'est donc pas nécessaire d'utiliser une annotation de données dans un modèle ou une classe de modèle de vue.

22
Hasib Hasan Arnab

Si votre champ de données est déjà un type de données DateTime, vous n'avez pas besoin d'utiliser [DataType(DataType.Date)] pour l'annotation; juste utiliser:

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

sur jQuery, utilisez datepicker pour votre calendrier

    $(document).ready(function () {
        $('#StartDate').datepicker();
    });

sur votre code HTML, utilisez EditorFor helper:

    @Html.EditorFor(model => model.StartDate)
14
Toddt

Appliquez DataAnnotation comme:

[DisplayFormat(DataFormatString = "{0:MMM dd, yyyy}")]
13
Chirag

Utilisez ceci, mais c'est une solution complète:

[DataType(DataType.Date)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
9
Renatto Machado

Utilisez EditorFor plutôt que TextBoxFor

4
collusionbdbh

Après avoir commenté

          // [DataType(DataType.DateTime)] 

Utilisez l'attribut d'annotation de données:

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

L'étape 7 du lien suivant peut vous aider ...

http://ilyasmamunbd.blogspot.com/2014/12/jquery-datepicker-in-aspnet-mvc-5.html

4

définissez votre propriété en utilisant le code ci-dessous au moment de la création du modèle, je pense que votre problème sera résolu .. et que l'heure n'apparaît pas dans la base de données. Vous n'avez pas besoin d'ajouter une annotation.

private DateTime? dob;
        public DateTime? DOB
        {
            get
            {
                if (dob != null)
                {
                    return dob.Value.Date;
                }
                else
                {
                    return null;
                }

            }
            set { dob = value; }
        }
0
user4719992

Ça marche pour moi

[DataType(DataType.DateTime)]
[DisplayFormat(DataFormatString = "{0:dd-mm-yyyy}", ApplyFormatInEditMode = true)]
0
FelixAVeras