Frage

Ich habe eine Person-Klasse mit einer BornDate Eigenschaft in meinem Modell definiert als

[DisplayName("Born Date")]
public DateTime? BornDate { get; set; }

ich dieses Feld in meiner Ansicht verwenden, wie

<td style="white-space:nowrap">
    <%= Html.LabelFor(model => model.BornDate)%>
    <br />
    <%= Html.TextBoxFor(model => model.BornDate, new { id = "bornDate" })%>
    <%= Html.ValidationMessageFor(model => model.BornDate, "*")%>
</td>

Das Problem ist, dass, wenn ich die Bearbeitung einer Person-Instanz mit dem BornDate Textfeld formatiert als

dd/MM/yyyy hh.mm.ss

, während ich mag es zu formatieren, ohne den Zeitteil ( „TT / MM / yyyy“). Ich bin nicht in der Lage, die toString-Methode mit dem Format-String zu verwenden, da es sich um ein Nullable-Feld ist.

Was kann ich tun?

War es hilfreich?

Lösung

Es soll möglich sein, Wert zu verwenden. Stellt sicher, es ist nicht null zuerst.

var displayDate = model.BornDate.HasValue ? model.BornDate.Value.ToString("yyyy") : "NoDate";

Andere Tipps

Ich weiß, das ist sehr spät, aber ich erforschte ein anderes Problem und kam in dieser Frage. Es gibt einen Weg, um nur den Datumsteil zu zeigen, die nicht Präsentationsschicht erfordert die Formatierung.

[DisplayName("Born Date")]
[DataType(DataType.Date)]
public DateTime? BornDate { get; set; }

Dies wird gewährleistet, dass überall Sie binden an diese Eigenschaft auf Ihrer Ansicht, nur das Datum zeigen

Hope, das hilft jemand

diese in Ihrer Ansicht zu tun, können Sie Razor-Syntax verwenden, auch:

 @Html.TextBox("BornDate", item.BornDate.HasValue ? item.BornDate.Value.ToShortDateString():"") 

Sie können dies tun, wird es mit Nullable Modelltypen arbeiten:

@model DateTime?
@{
    object txtVal = "";
    if (Model.HasValue) 
    {
        txtVal = Model.Value;
    };
}
@Html.TextBoxFor(x => Model, new {Value = string.Format(ViewData.ModelMetadata.EditFormatString, txtVal))

Eine andere Art, wie ich dieses Problem in Angriff genommen habe, ist durch das Hinzufügen Format an den TextBoxFor

@Html.TextBoxFor(model => model.BornDate, "{0:MM/dd/yyyy}", new { id = "bornDate" })
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top