Modèle DataAnnotation [Type De Données(DateType.Date)] rend DatePicker, mais cache ma valeur?
J'ai 3 champs de date dans mon INV_Assets modèle: acquired_date
, disposed_date
, et created_date
. Je les ai affichant en tant que format de MM/dd/yyyy
dans certains @Html.EditorFor()
's.
Ce que j'essaie de faire maintenant est d'ajouter un simple datepicker fonctionnalité, qui est l'endroit où je suis tombé sur CETTE post sur l'utilisation de [DataType(DataType.Date)]
attribut sur mon propriétés du modèle. Mon created_date
est actuellement défini comme:
[Required]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)]
public DateTime created_date { get; set; }
Ce qui rend la liste de fonctionnalités, mais la valeur dans la zone s'affiche exactement comme "mm/dd/yyyy" au lieu de montrer la valeur réelle. Par exemple, si je retire la [DataType(DataType.Date)]
attribut:
[Required]
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)]
public DateTime created_date { get; set; }
Ma valeur se présente comme "02/10/2015" sans le datepicker de la fonctionnalité.
Quelqu'un peut-il donner un exemple de comment je peux rendre cette datepicker fonctionnalité, mais de montrer la valeur réelle de mon domaine dans la boîte (quand une valeur est présente)?
MODIFIER:
Le created_date
domaine sur mon point de Vue est actuellement définie comme suit (à la suite de Chris suggestion, j'ai tenté de forcer la valeur à être dans le format AAAA-MM-JJ):
<div class="form-group">
@*@Html.LabelFor(model => model.created_date, htmlAttributes: new { @class = "control-label col-md-2" })*@
<span class="control-label col-md-2">Created Date:</span>
<div class="col-md-10">
@Html.EditorFor(model => model.created_date, new { htmlAttributes = new { @class = "form-control", @Value = Model.created_date.ToString("YYYY-MM-DD") } })
@Html.ValidationMessageFor(model => model.created_date, "", new { @class = "text-danger" })
</div>
</div>
Ce qui rend le code suivant:
<input value="YYYY-02-DD" class="form-control text-box single-line" data-val="true" data-val-date="The field created_date must be a date." data-val-required="The created_date field is required." id="created_date" name="created_date" type="date">
Vous devez vous connecter pour publier un commentaire.
Je suis en supposant que vous êtes également à l'aide de HTML 5
date
type d'entrée, c'est à dire<input type="date">
. La valeur d'une date d'entrée type, doit être un ISO format date: AAAA-MM-JJ. L'espace réservé que vous voyez là est juste le navigateur de fournir une interface utilisateur plus conviviale de l'écran, mais c'est la conversion vers/à partir du format ISO en coulisses. Si vous ne fournissez pas une bonne date ISO, alors il est essentiellement traitée par le navigateur comme aucune valeur.YYYY-MM-DD
, alors que Microsoft exigeyyyy-MM-dd
. C'est pourquoi la valeur de finYYYY-02-DD
. LeMM
est la seule partie qu'il pouvait traduire. C'est juste un plus d'une myriade de raisons pour lesquelles vous devriez utiliser des modèles de vue. Pour l'édition, vous pouvez définir le format de date àyyyy-MM-dd
, donc vous pouvez jouer à nice avec la date d'entrée, et pour l'affichage, vous pouvez avoir un modèle différent qui utilise le format que vous aimez.Cela a fonctionné pour moi
Suivant Chris Pratt Idée