afficher uniquement la date de @Html.EditorFor helper
Je suis en train de remplir @Html.EditorFor
helper. J'ai créé un modèle de vue avec le dessous de la propriété
[DataType(DataType.Date, ErrorMessage="Date only")]
[DisplayFormat(DataFormatString = "{0:dd/MM/yy}", ApplyFormatInEditMode = true)]
public DateTime? YearBought { get; set; }
et mon aide est configuré comme ci-dessous (a)
@Html.ValidationMessageFor(m => m.YearBought)
@Html.EditorFor(model => model.YearBought, new { @type = "date" })
J'ai aussi essayé (b)
@Html.ValidationMessageFor(m => m.YearBought)
@Html.EditorFor(model => model.YearBought.Value.Date)
En utilisant le format ci-dessus (a) rien ne s'affiche. En utilisant le format ci-dessus (b) 12/05/2014 00:00:00
est affiché dans la zone de texte format.
Je suis en train de réaliser un datepicker format sans un temps affiché
J'ai passé en revue plusieurs autres questions, mais ne peux pas voir ce que j'ai fait différents.
Quand je regarde dans ma base de données, la valeur est enregistrer en tant que 2014-05-12
et quand je suis en économie de la valeur de la EditorFor helper génère de la puissance requise des installations
questions examinées
première deuxième troisième....la liste est longue
MODIFIER
vient d'ouvrir la console de chrome dev tools et donc ce message
La valeur spécifiée "12/05/14" n'est pas conforme à la forme "aaaa-MM-jj"
J'ai pensé DisplayFormat(DataFormatString = "{0:dd/MM/yy}"
était de définir comment afficher ma date?
- qu'est-ce que le supplément de
@type
pour? dans@Html.EditorFor(model => model.YearBought, new { @type = "date" })
vous ne pouvez pas spécifier htmlattributes si vous utilisez EditorFor donc, juste curieux - la date a été une dernière tentative pour le faire fonctionner, pas d'autre logique que celle im peur 🙁
- Connexes: stackoverflow.com/questions/15943797/...
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser le format ISO lors de l'utilisation de
type="date"
Cela permet d'afficher la date dans les navigateurs de la culture.
Remarque il n'est pas nécessaire d'ajouter
@type = "date"
. LeEditorFor()
méthode ajouter qu'en raison de laDataType
attribut. Notez également quetype="date"
est uniquement pris en charge en Chrome (FireFox et IE sera tout simplement de générer une zone de texte normale)Si vous ne souhaitez afficher le format
dd/MM/yyyy
dans une zone de texte standard, alors vous pouvez utiliserEditorFor()
ne prend pas en charge que de la syntaxe. Tous vous avez besoin est@Html.TextBoxFor(m => m.YearBought)
- leEditorFor() method respects values in the
Type de données " etDisplayFormat
attributs@Html.EditorFor()
vous devez spécifier le format queyyyy-MM-dd
, pas comme la façon dont il est présenté dans la queTextBoxFor
, ci-dessus. Comme il l'a fait Ashish, il pourrait confondre certains les gens en pensant que vous pouvez utiliser ce format pourEditorFor
- vous avez raison, vous ne pouvez pas. Mais juste faire@Html.EditorFor(m => m.YearBought)
est certainement pas assez, même avec les attributs de modèle. Voir ma réponse: stackoverflow.com/questions/33247295/...Je voudrais rendre votre modèle de vue du
YearBought
propriété d'unString
pour la simple manipulation. Le serveur peut format de la date, il peut faire l'analyse sur la publication, et vous pouvez toujours utiliser leDataType.Date
annotation de données pour jQuery de validation. Cela garantit également que la valeur d'affichage sera exactement ce que vous voulez avant d'être soumis à la vue.Alternative à l'HTML, l'attribut type, vous pouvez utiliser un
EditorTemplate
MVC pour mettre le balisage, CSS et JS requis pour rendre un éditeur personnalisé pour un C# de type de données commeDateTime
.Ici est une procédure pas à pas pour créer une "EditorTemplate' en MVC (mais pas pour un type de données de Date, mais le concept est le même)
Comme il est dit dans la réponse de Stephen, vous devez faire vos formats match entre les balises dans votre modèle de ce qui est montré dans la Vue, et il devrait être de la
yyyy-MM-dd
(ISO) format, indépendamment de la façon dont vous voulez afficher la date:Et il a bien raison, parce que nous avons
[DataType(DataType.Date)]
, nous n'avons pas besoin@type = date
dans notreHtmlAttributes
sur la Vue.Où ma réponse diffère de son est de savoir comment appliquer effectivement la valeur de Modèle pour le contrôle de la Vue. Depuis
YearBought
est unNullable<DateTime>
, nous avons à définir à sa valeur d'une certaine manière, à l'aide de.Value
:En accordant une attention pour les
.ToString("yyyy-MM-dd")
. Il ne va pas afficher dans la boîte comme ça, bien que - au moins pour moi - sans doute parce que mon états-UNIS paramètres Régionaux sur mon ordinateur les reprendre et de les afficher surMM/dd/yyyy
indépendamment. Cela peut confondre certains, mais il est préférable de simplement "faire" et ne pas s'en soucier.Si
YearBought
était juste un droitDateTime
au lieu d'unDateTime?
, il serait sans.Value
:value
attribut lors de l'utilisation deHtmlHelper
méthodes (sauf si vous essayez de le visser en place de la liaison de modèle).HtmlHelper
méthodes qui génèrent des contrôles de formulaire de définir correctement levalue
attribut en première lecture à partir deModelState
, puis leViewDataDictionary
et enfin de la véritable valeur de modèle.myViewModel.startdt = DateTime.Now;
L'a transmis à mon avis avec unreturn View("MyView", myViewModel);
et avaitusing @model TestSite.ViewModels.MyViewModel
en haut. Tous mesEditorFor()
boîtes étaient très bien et l'affichage de mon modèle une fois qu'un formulaire de publication, mais laEditorFor()
ceux avec qui j'étais remplissage avec des dates n'étaient que de "mm/dd/yyyy" si pas de paramètre d'un@Value
. Je ne suis pas la seule réponse à jamais dire à l'utilisation qui, par la façon: stackoverflow.com/questions/15943797/...HtmlHelper
méthodes de travail (sans voir votre code, tout ce que je peux faire est de deviner que vous essayez de modifier la valeur dans votre contrôleur, après une valeur a été ajoutée àModelState
)Index()
, qui est unreturn View(myViewModel);
. Cliquez sur un bouton "Enregistrer" après j'ai télécharger un fichier-lanceUpload()
qui lit les propriétés & jeuxmyViewModel.startdt = DateTime.Now;
alors il nereturn View("Index", myViewModel);
de mettre à jour le modèle d'origine avec mes nouvelles valeurs. Comme je l'ai dit, que les dates ont des problèmes.