Pourquoi est-DisplayFormat DataFormatString pas de travail?
J'ai une propriété de mon point de vue le modèle comme suit:
[Editable(false)]
[Display(Name = "Date")]
[DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}", ApplyFormatInEditMode = true)]
public DateTime MovementDate { get; set; }
Encore le balisage
<td>
@Html.DisplayFor(modelItem => item.MovementDate)
</td>
rend la valeur de la date que 2013/05/15 12:00:00 AM
.
Ce que je fais mal? Mon modèle:
public class WithDateModel
{
[DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}")]
public DateTime TheDate { get; set; }
public WithDateModel()
{
TheDate = DateTime.Now;
}
}
Mon point de vue:
@model ParkPay.WebTests.Models.WithDateModel
@Html.DisplayFor(m => m.TheDate)
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
Ce qui est du rendu:
2013/05/25 02:23:37 AM
- Pensez-vous que vous souhaitez afficher la date? Le
DateTime
structure est une expression de la date et de l'heure. - Je suis bien conscient que la structure DateTime comprend des temps. C'est exactement pourquoi je suis en train d'utiliser teh
DataFormatString
propriété d'exclure le temps à partir de la date formatée. - L'avez-vous résolu le problème? Réponse de l'assistance?
- Il ne fonctionnait pas pour moi, parce que je n'ai pas utilisé
@Html.DisplayFor()
. J'ai commenté ce ici au cas où d'autres personnes de faire la même erreur. - Utilisez [Type De Données(DataType.La Date] pour retourner uniquement la partie de la DATE de DATETIME.
Vous devez vous connecter pour publier un commentaire.
Pourquoi êtes-vous à l'aide de
ApplyFormatInEditMode
si vous avez défini[Editable(false)]
? Tous lesApplyFormatInEditMode
n'est le format de la date si vous l'avez dans une zone de texte ou quelque chose pour l'édition, ce qui vous ne serez probablement pas en raison de ce qui précède.J'ai été en mesure d'obtenir la date pour afficher correctement en utilisant les suivantes:
et dans la vue (résultant de la sortie):
Espère que cette aide.
ApplyFormatInEditMode
sur chaqueDisplayFormat
attribut que d'avoir à en ajouter ou les supprimer si je ajouter ou supprimer le[Editable(false)]
attribut.Si vous ne pouvez pas le faire fonctionner sur le modèle que vous pouvez essayer sur la vue.
@Html.TextBoxFor(m => m.ValidFrom, "{0:dd/MM/yyyy}", new {maxlength = 10})
EditorFor()
et il ne fonctionne pas non plus, et j'aimerais VRAIMENT ne pas avoir à "hard-code' il.@Html.EditorFor
et pas les autres aides. Vous pouvez utiliser le EditorFor helper et vous pouvez toujours ajouter votre classe personnalisée à l'aide de@Html.EditorFor(x=> x.MyProperty, new { htmlAttributes = new { @class = "MyCssClass" } })
Puisque Vous voulez exclure le temps de faire Seulement de la Date:
Au Modèle:-
À Vue:-
Le tutoriel du lien suivant peut vous aider.Il fonctionne pour moi.
http://ilyasmamunbd.blogspot.com/2014/02/jquery-ui-datepicker-popup-calendar.html
ApplyFormatInEditMode
a fait pour moi.Dans mon cas, un coéquipier avait défini un mondial du modèle d'affichage (aka
~\Views\Shared\DisplayTemplates\DateTime.cshtml
) que je ne savais pas pris le dessus sur ma[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}")]
sur mon modèle de propriété.La solution a été de passer ma chaîne de format pour de nouveaux modèles partagée, de sorte que les modifications d'attribut à:
Vous devez annoter le type de Date
Ce travail pour moi:
Dans le modèle:
Et dans la vue:
Vous avez besoin de la var nom dans le Nom d'Affichage de:
[Display(Name = "MovementDate")]
public DateTime MovementDate { get; set; }