J'ai du mal à afficher la seule partie date d'un DateTime dans une zone de texte à l'aide de TextBoxFor <,> (expression, htmlAttributes).
Le modèle est basé sur Linq2SQL, le champ est un DateTime sur SQL et dans le modèle Entity.
Échoué:
<%= Html.TextBoxFor(model => model.dtArrivalDate, String.Format("{0:dd/MM/yyyy}", Model.dtArrivalDate))%>
Cette astuce semble être dépréciée, toute valeur de chaîne dans l'objet htmlAttribute est ignorée.
Échoué:
[DisplayFormat( DataFormatString = "{0:dd/MM/yyyy}" )]
public string dtArrivalDate { get; set; }
Je voudrais stocker et afficher uniquement la partie date sur la vue détails / édition, sans la partie "00:00:00".
asp.net-mvc
Kronos
la source
la source
@Html.EditorFor(m => m.IssueDate)
et la mise en forme sur le modèle est appliquée en tant que[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}" )]
mais la date est toujours affichée comme01/01/0001 12:00:00 AM
MVC4 a résolu ce problème en ajoutant une nouvelle
TextBoxFor
surcharge, qui prend un paramètre de format de chaîne. Vous pouvez maintenant simplement faire ceci:Il y a aussi une surcharge qui prend des attributs html, vous pouvez donc définir la classe CSS, câbler les sélecteurs de date, etc.:
la source
@Html.TextBoxFor(m => m.SomeDate, "{0:MM/dd/yyyy}", new { @id="datepicker" })
[DisplayFormat]
attribut du modèle . Heureux qu'il y ait au moins un remplacement dans TextBoxFor (et que vous m'ayez alerté).@Html.TextBoxFor(model => model.CDate, "{0:dd.MM.yyyy}")
mais sur httpPost, j'obtiens des données comme MM.dd.yyyy. Comment résoudre ça?input[type=date]
spécifications nécessitent un"{0:yyyy-MM-dd}"
format.la source
@Value = (Model.DateBecamePermanentResident == null ? "" : Model.DateBecamePermanentResident.Value.ToString("dd.MM.yyyy"))
Ou utilisez les aides non typées:
la source
@Html.TextBoxFor(model => model.EndDate, "{0:d}", new { type = "date" })
Cela a fonctionné pour moi.
la source
N'ayez pas peur d'utiliser du HTML brut.
la source
TextBoxFor
ou àEditorFor
formater la valeur de toute façon. Voir ma question: l' aide de TextBoxFor mélange le jour et le mois dans les datesTL; DR;
L'application
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")]
n'a pas fonctionné pour moi!Explication:
Afin d'afficher une propriété date de votre modèle à l'aide de
Html.TextBoxFor
:Propriété Date de votre classe de modèle:
Rien d'autre n'est nécessaire du côté du modèle.
Dans Razor, vous faites:
Explication:
La date d'un
input
élément html de typedate
doit être formatée par rapport à ISO8601 , qui est:yyyy-MM-dd
D'après mon expérience, la langue n'est pas déterminée par l'en-
Accept-Language
tête, mais par la langue d'affichage du navigateur ou la langue du système d'exploitation.la source
Vous pouvez également utiliser les attributs HTML 5 en appliquant cette annotation de données:
Mais le problème est que cela permet un sélecteur de date spécifique au navigateur pour les navigateurs HTML 5. Vous avez toujours besoin de votre propre sélecteur de date pour les navigateurs sans prise en charge, puis vous devez vous assurer que votre sélecteur de date n'apparaît pas en plus d'un navigateur (Modernizr peut le faire facilement), ou masquer le navigateur s'il le fait (compliqué et je Je ne sais pas à quel point les méthodes que j'ai vues étaient fiables).
En fin de compte, je suis allé avec Alex parce que mon environnement actuel n'a pas Modernizr, mais si c'était le cas, je l'aurais utilisé pour afficher conditionnellement mon sélecteur de données uniquement si le navigateur ne le supportait pas déjà.
la source
Pour moi, je devais garder le
TextboxFor()
car l'utilisationEditorFor()
change le type d'entrée à ce jour. Ce qui, dans Chrome, ajoute un sélecteur de date intégré, qui a foiré le sélecteur de date jQuery que j'utilisais déjà. Donc, pour continuer à utiliserTextboxFor()
ET uniquement pour afficher la date, vous pouvez le faire:la source
L'attribut DisplayFormat n'a pas fonctionné pour moi sous aucune forme lors du chargement initial. J'ai plutôt créé un EditorTemplate:
la source
L'éditeur de modèles fonctionnera uniquement à des fins d'affichage. Si vous utilisez le même éditeur (ce qui est logique car c'est un éditeur) et que vous avez fourni une valeur comme 31/01/2010 - vous obtiendrez un message d'erreur indiquant que le format n'est pas valide.
la source
J'utilise Globalize donc je travaille avec de nombreux formats de date, utilisez donc ce qui suit:
Cela ajustera automatiquement le format de la date aux paramètres régionaux du navigateur.
la source
Gardez à l'esprit que l'affichage dépendra de la culture. Et bien que dans la plupart des cas, toutes les autres réponses soient correctes, cela n'a pas fonctionné pour moi. Le problème de culture entraînera également différents problèmes avec jQuery datepicker, s'il est joint.
Si vous souhaitez forcer l'échappement du format
/
de la manière suivante:Si ce n'est pas échappé pour moi, cela montre
08-01-2010
vs prévu08/01/2010
.De plus, s'il n'est pas échappé, jQuery datepicker sélectionnera une autre date par défaut, dans mon cas c'était le cas
May 10, 2012
.la source
Si vous utilisez le sélecteur de date Bootstrap, vous pouvez simplement ajouter l' attribut data_date_format comme ci-dessous.
la source
// la date et l'heure s'affichent dans la datePicker est le 11/24/2011 12:00:00 AM
// vous pouvez diviser cela par espace et définir la valeur à date uniquement
Scénario:
Balisage:
J'espère que cela aide ..
la source
Bien sûr, vous pouvez utiliser Html.EditorFor. Mais si vous souhaitez utiliser TextBoxFor et utiliser le format de l'attribut DisplayFormat, vous pouvez l'utiliser de cette manière:
ou créez la prochaine extension:
la source
Ajoutez juste à côté de votre modèle.
la source
Lorsque vous utilisez des assistants de balise dans ASP.NET Core, le format doit être spécifié au format ISO. Si elles ne sont pas spécifiées comme telles, les données d'entrée liées ne s'afficheront pas correctement et s'afficheront en mm / jj / aaaa sans valeur.
Modèle:
Vue:
Le format peut également être spécifié dans la vue à l'aide de l'attribut asp-format.
Le code HTML résultant se présente comme suit:
la source
Vous pouvez utiliser le code ci-dessous pour imprimer l'heure au format HH: mm . Dans mon cas, le type de propriété est TimeSpan. La valeur vient donc au format HH: mm: tt, mais je dois l'afficher au format ci-dessus. HH: mm
la source
Si vous insistez pour utiliser le
[DisplayFormat]
, mais que vous n'utilisez pas MVC4, vous pouvez utiliser ceci:la source