web-dev-qa-db-de.com

Wie formatieren Sie eine DateTime, die von TextBoxFor () in MVC3 angezeigt wird?

Ich habe ASP.NET MVC3 installiert. Ich brauche Datepicker mit formatiertem Datum. Ich habe es versucht, aber es funktioniert nicht (wenn Sie als Formatparameter "{0: dd/MM/yyyy}" übergeben, formatiert es immer noch nicht):

    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);
    }

BEARBEITEN: Mein Code funktioniert, wenn das Format "{0: TT-MM-JJJJ}" ist, aber nicht nur für "{0: TT/MM/JJJJ}".

Ich weiß, dass MVC4 bereits diese Funktionalität hat, aber mein Projekt ist leider auf MVC3 geschrieben. Kannst du mir helfen?

12
karaxuna

Das einzige Format, das ich überhaupt bekommen habe, ist folgendes:

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

Die Syntax lautet: @ Html.TextBoxFor (Ausdruck, Zeichenkettenformat, Objekt htmlAttributes)

z.B:

   @Html.TextBoxFor(x => x.DateUtc, "{0:yyyy-MM-dd HH:mm:ss}",
            new { @class = "form-control", placeholder = "Enter Title", id="myDate"})
9
ninetiger

Verwenden Sie in Ihrem Modell Folgendes:

[DisplayFormat(DataFormatString="{0:dd/MM/yyyy}")]
public DateTime YourDate { get; set; }

Folgendes sollte es in der Ansicht tun:

@Html.EditorFor(model => model.YourDate, new { @class = "date" })

Dies sollte Ihnen ein Datum geben, das auf das Format TT/MM/JJJJ formatiert ist.

2
IyaTaisho

dieses Format wird Ihnen helfen:

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

Die Anzeige hängt von der Kultur ab. Und obwohl in den meisten Fällen alle anderen Antworten richtig sind, hat es für mich nicht funktioniert. Das Kulturproblem verursacht auch andere Probleme mit jQuery Datepicker, wenn es angehängt ist.

Wenn Sie das Format-Escape auf folgende Weise erzwingen möchten:

@Html.TextBoxFor(model => model.YourDate, "{0:MM\\/dd\\/yyyy}")

Wenn es für mich nicht entkommen ist, wird 08-01-2010 vs. erwarteter 08/01/2010 angezeigt.

Wenn es nicht mit einem Escapezeichen versehen ist, wählt jQuery datepicker ein anderes defaultDate aus, in meiner Instanz war es May 10, 2012.

0
CrnaStena