it-swarm.com.de

Warum funktioniert DisplayFormat DataFormatString nicht?

Ich habe eine Eigenschaft in meinem Ansichtsmodell wie folgt:

[Editable(false)]
[Display(Name = "Date")]
[DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}", ApplyFormatInEditMode = true)]
public DateTime MovementDate { get; set; }

Noch das Markup

<td>
    @Html.DisplayFor(modelItem => item.MovementDate)
</td>

stellt den Datumswert als 2013/05/15 12:00:00 AM dar.

Was mache ich falsch? Mein Modell:

public class WithDateModel
{
    [DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}")]
    public DateTime TheDate { get; set; }
    public WithDateModel()
    {
        TheDate = DateTime.Now;
    }
}

Meine Sicht:

@model ParkPay.WebTests.Models.WithDateModel
@Html.DisplayFor(m => m.TheDate)
@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

Was wird gerendert:

2013/05/25 02:23:37 AM
25
ProfK

Warum verwenden Sie ApplyFormatInEditMode, wenn Sie [Editable(false)] eingestellt haben? Alles, was ApplyFormatInEditMode tut, ist das Datum zu formatieren, wenn Sie es in einem Textfeld oder etwas zur Bearbeitung haben, was Sie wahrscheinlich aufgrund des oben genannten nicht tun.

Ich konnte das Datum mithilfe der folgenden Informationen korrekt anzeigen:

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

und in der Ansicht (mit resultierender Ausgabe):

@Html.DisplayFor(x => x.Date)        // 2013/05/23
<br />
@Model.Date                          // 23/05/2013 09:57:56
<br />
@Html.DisplayFor(x => Model.Date)    // 2013/05/23

Hoffe das hilft.

7
MattSull

Wenn Sie es auf dem Modell nicht zum Laufen bringen können, können Sie es auf der Ansicht versuchen.

@Html.TextBoxFor(m => m.ValidFrom, "{0:dd/MM/yyyy}", new {maxlength = 10})

38
user1616625

Da möchten Sie die Zeit ausschließen, um Only Date: At Model: - zu erhalten.

 [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy/MM/dd}"]
   public DateTime TheDate { get; set; }

Bei Ansichten: -

    @Html.DisplayFor(model=> model.TheDate)
    @Html.JQueryUI().DatepickerFor(model => model.TheDate)

Das Tutorial des folgenden Links kann Ihnen helfen. Es funktioniert für mich.

http://ilyasmamunbd.blogspot.com/2014/02/jquery-ui-datepicker-popup-calendar.html

Sie müssen den Typ als Datum versehen

[DataType(DataType.Date)]
1
Prakash G. R.

In meinem Fall hatte ein Teamkollege eine globale Anzeigevorlage (alias ~\Views\Shared\DisplayTemplates\DateTime.cshtml) definiert, von der ich nicht wusste, dass sie Vorrang vor meiner [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}")] auf meiner Modelleigenschaft hatte.

Die Lösung bestand darin, meine Formatzeichenfolge in eine neue freigegebene Vorlage zu verschieben, sodass das Attribut folgendermaßen geändert wird:

// see ~\Views\Shared\DisplayTemplates\DateMyFormat.cshtml for formatting
[UIHint("DateMyFormat")]
public DateTime MovementDate { get; set; }
0
yzorg

Diese Arbeit für mich:

Im Modell:

using System.ComponentModel.DataAnnotations;

namespace Athlete.Models
{
    public class Foo
    {

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

Und im Blick:

<td style="text-align:left;">@Html.DisplayFor(modelItem => item.SignDate)</td>
0
Keith Aymar