2017-07-10 10 views
-3

I-Eingang mit starkem Typ habeanzeigen Datetime jetzt in Eingang (ASP.NET MVC)

Hier Code

<input type="text" name="dateTime" value="@Model.DateTime"/> Date <br/>

Ich versuche, mit dieser DateTime.Now in diesem Eingang standardmäßig zu zeigen

Code

@{ DateTime dateTime = Model.DateTime.Year > 2000 ? Model.DateTime : DateTime.Now;}

Aber es nicht funktioniert, und ich habe diesen Fehler

enter image description here

Wie kann ich DateTime.Now in der Eingabe zeigen?

+2

Es ist nullable. DateTime.Value.Year. – CodeCaster

+2

Verwenden Sie immer Code statt Bild. – Eldho

+0

mit C# 6 Features alles, was Sie brauchen, ist ein?, D. H. '@ {DateTime dateTime = Model.DateTime? .Year> 2000? Model.DateTime: DateTime.Now;} ' –

Antwort

0

Sie haben DateTime? die nullable Typ ist, so dass Sie es über Value Eigenschaft es der tatsächliche Wert wie zugreifen müssten:

Model.DateTime.Value.Year 

Aber Sie würden sicherstellen müssen, dass es nicht null ist als gut wie:

if(Model.DateTime.HasValue) 

andernfalls wird es Ausnahme zur Laufzeit werfen.

Sie können es zu etwas Refactoring wie:

@{ 
    DateTime dateTime = (Model.DateTime.HasValue && Model.DateTime.Value.Year > 2000) 
         ? Model.DateTime.Value 
         : DateTime.Now; 
} 

Hoffe, es hilft!

+0

Ja, es hilft. Vielen Dank! –

1

Sie erhalten diesen Fehler, da Ihr Model.DateTimenullable Typ ist und Sie versuchen, Model.DateTime Wert dateTime Variablen zugewiesen werden. So kann null nicht einem not-nullable Typ zugewiesen werden.

Sie müssen überprüfen, ob es null ist oder nicht, dann können Sie das Jahr mit 2000 wie vergleichen unter

@{ 
    DateTime dateTime = Model.DateTime.HasValue?(Model.DateTime.Value.Year > 2000 ? Model.DateTime.Value : DateTime.Now) : DateTime.Now; 
} 
Verwandte Themen