Dans le rasoir MVC, je mets la date actuelle dans la base de données comme ceci.
model.Returndate = DateTime.Now.Date.ToShortDateString();
Puisque le champ de base de données est un type de données datetime et que je convertis la date actuelle au format chaîne, cela ne fonctionne pas. Comment puis-je faire cela? Je fais le format de chaîne parce que je veux la date au format mm / jj / aaaa et non au format mm / jj / aaaa hh: mm: ss.
ÉDITER:
Dans le contrôleur j'ai
var model = new ViewModel();
model.ReturnDate = DateTime.Now;
return PartialView("PartialView", model);
Dans la vue partielle, j'ai
@Html.EditorFor(model => model.Returndate)
C'est là qu'il affiche la date en tant que date et heure ensemble ... Je veux juste que la date soit affichée. Pas le temps. J'espère que cette modification explique mieux.
c#
asp.net-mvc
asp.net-mvc-3
datetime
ZVenue
la source
la source
ToString("mm/dd/yyyy");
pour pouvoir voir exactement ce que vous voulez.DateTime
. Vous effectuez la mise en forme de la chaîne sur la SORTIE ... Formatez-la uniquement vers le visualiseur final.Réponses:
Si le type de colonne est DateTime en SQL, il stockera une heure à laquelle vous en transmettez une ou non.
Il vaudrait mieux enregistrer la date correctement:
puis formatez-le lorsque vous avez besoin de l'afficher:
Ou si vous utilisez EditorFor:
ou
Pour ajouter une propriété à votre modèle, ajoutez ce code:
Puis dans votre PartialView:
ÉDITER:
Salut les gars, je veux juste clarifier pour cette réponse qu'en disant `` Si vous utilisez EditorFor '', cela signifie que vous devez avoir un modèle EditorFor pour le type de valeur que vous essayez de représenter.
Les modèles d'éditeur sont un moyen intéressant de gérer les contrôles répétitifs dans MVC:
http://coding-in.net/asp-net-mvc-3-how-to-use-editortemplates/
Vous pouvez les utiliser pour des types naïfs comme String comme je l'ai fait ci-dessus; mais ils sont particulièrement utiles pour vous permettre de modéliser un ensemble de champs d'entrée pour un type de données plus compliqué.
la source
J'ai juste eu à gérer ce scénario moi-même - j'ai trouvé un moyen très simple de le faire, annotez simplement votre propriété dans le modèle comme ceci:
Il masquera également le bouton d'heure du sélecteur de date.
Désolé si cette réponse est un peu tardive;)
la source
Cela fonctionne si vous souhaitez afficher dans une zone de texte:
la source
La date / heure dans la base de dates ne sera pas du tout une version formatée . Ce sera juste la date / heure elle-même. La façon dont vous affichez cette date / heure lorsque vous extrayez la valeur de la base de données est une autre affaire. Je soupçonne fortement que vous voulez vraiment:
ou éventuellement
Oui, si vous regardez la base de données en utilisant SQL Server Management Studio ou autre, vous verrez maintenant minuit - mais qui est hors de propos, et quand vous allez chercher la date de la base de données et l' afficher à un utilisateur, alors vous pouvez appliquer le format correspondant .
EDIT: En ce qui concerne votre question modifiée, le problème n'est pas avec le modèle - c'est la façon dont vous spécifiez la vue. Vous devriez utiliser quelque chose comme:
où
d
est le spécificateur de format de date et d'heure standard pour le modèle de date courte (ce qui signifie qu'il prendra en compte les paramètres culturels actuels).C'est ce que j'ai répété à plusieurs reprises - que lorsque vous affichez la date / heure à l'utilisateur , c'est le moment de le formater sous forme de date sans heure.
EDIT: Si cela ne fonctionne pas, il devrait y avoir un moyen de décorer le modèle ou la vue avec une chaîne de format - ou quelque chose comme ça. Je ne suis pas vraiment une personne MVC, mais j'ai l'impression qu'il devrait y avoir un bon moyen de le faire de manière déclarative ...
la source
Vous pouvez modifier votre ViewModel comme ci-dessous:
la source
Vous pouvez appliquer un format de date et d'heure personnalisé en utilisant
ToString
comme:Vous
DateTime.ToString
trouverez ici et ici des informations complémentaires sur les modèles de formats .Modifier: après la modification de votre question, tout comme les autres suggestions, vous devez appliquer le format de date à votre vue:
la source
model.Returndate.ToString("mm/dd/yyyy")
?Je ne suis pas sûr dans Razor mais dans ASPX, vous faites:
Il doit y avoir quelque chose de similaire dans Razor. J'espère que cela aidera quelqu'un.
la source
Si vous avez une boucle for telle que celle ci-dessous.
Remplacez @ item.StartDate par @ item.StartDate.Value.ToShortDateString ()
Cela supprimera l'heure au cas où vous ne pourriez pas annoter votre propriété dans le modèle comme dans mon cas.
la source
Incluez des annotations de données telles que DisplayFormat et ApplyFormatInEditMode pour obtenir la sortie souhaitée.
[Display(Name = "Bill Date")] [DataType(DataType.Date)] [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)] public DateTime BillDate { get; set; }
Maintenant, votre date de facturation s'affichera comme.
la source
Vous pouvez simplement convertir le datetime. Quelque chose comme:
la source
J'ai eu quelques problèmes avec les autres solutions sur cette page, alors j'ai pensé que je laisserais cela.
Il vous suffit donc d'ajouter "{0: d}" dans le deuxième paramètre et vous devriez être prêt à partir.
la source