J'ai ASP.NET MVC3 installé. J'ai besoin de datepicker avec date formatée. J'ai essayé cela, mais ça ne marche pas (en passant "{0: jj/MM/aaaa}" comme paramètre de format, cela ne formate toujours pas):
private static MvcHtmlString FormattedDateTextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, string format, RouteValueDictionary htmlAttributes)
{
var metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
if (metadata.Model != null && metadata.Model as DateTime? != null)
htmlAttributes.Add("value", string.Format(format, (DateTime)metadata.Model));
return htmlHelper.TextBoxFor(expression, htmlAttributes);
}
EDIT: mon code fonctionne si le format est "{0: jj-MM-aaaa}" mais pas seulement pour "{0: jj/MM/aaaa}"
Je sais que MVC4 a déjà cette fonctionnalité, mais malheureusement mon projet est écrit sur MVC3. Pouvez-vous m'aider?
Le seul format que je me suis même mis au travail est le suivant:
@Html.TextBoxFor(m => m.Birthdate, "{0:MM/dd/yyyy}")
La syntaxe est la suivante: @ Html.TextBoxFor (expression, format de chaîne, objet htmlAttributes)
par exemple:
@Html.TextBoxFor(x => x.DateUtc, "{0:yyyy-MM-dd HH:mm:ss}",
new { @class = "form-control", placeholder = "Enter Title", id="myDate"})
Dans votre modèle, utilisez les éléments suivants:
[DisplayFormat(DataFormatString="{0:dd/MM/yyyy}")]
public DateTime YourDate { get; set; }
Voici ce qu'il faut faire dans la vue:
@Html.EditorFor(model => model.YourDate, new { @class = "date" })
Cela devrait vous donner une date au format jj/mm/aaaa.
ce format vous aidera à:
@Html.TextBoxFor(Model => Model._facadeLowdown.DoB, new { @value= Model._facadeLowdown.DoB.HasValue ? Model._facadeLowdown.DoB.Value.ToString("MM/dd/yyyy") : ""
}
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. Un problème de culture causera également différents problèmes avec jQuery datepicker, le cas échéant.
Si vous souhaitez forcer le format escape/de la manière suivante:
@Html.TextBoxFor(model => model.YourDate, "{0:MM\\/dd\\/yyyy}")
Si pas échappé pour moi, il affiche 08-01-2010
vs 08/01/2010
attendu.
Aussi, si pas échappé, jQuery datepicker sélectionnera une valeur par défaut différente, dans mon exemple, c'était May 10, 2012
.