web-dev-qa-db-fra.com

Comment formater un DateTime affiché par TextBoxFor () dans MVC3?

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?

12
karaxuna

Le seul format que je me suis même mis au travail est le suivant:

@Html.TextBoxFor(m => m.Birthdate, "{0:MM/dd/yyyy}")
40
ericbl

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"})
9
ninetiger

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.

2
IyaTaisho

ce format vous aidera à:

@Html.TextBoxFor(Model => Model._facadeLowdown.DoB, new { @value= Model._facadeLowdown.DoB.HasValue ? Model._facadeLowdown.DoB.Value.ToString("MM/dd/yyyy") : ""
}
2
Hassan Shabbir

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.

0
CrnaStena