2016-05-03 7 views
2

In meinem MVC-app versagt, habe ich eine gemeinsame DateTime.cshtml Ansicht wie folgt definiert:Mein Nullable Datetime-Ansicht wird mit einem Null

@model DateTime? 
@{ 
    var value = ""; 
    if (Model.HasValue) 
    { 
     value = String.Format("{0:d}", Model.Value); 
    } 
} 
@Html.TextBox("", value, new { @class = "form-control datepicker", type = "text" }) 

In einem meine Ansichten ich es wie folgt verwendet werden:

@model PublicationSystem.ViewModels.ProfileEdit 
<div class="form-group"> 
    @Html.LabelFor(model => model.BirthDate, htmlAttributes: new { @class = "control-label col-md-2" }) 
    <div class="col-md-10"> 
     @Html.EditorFor(model => model.BirthDate) 
    </div> 
</div> 

wenn jedoch mein Modell ein Null für Birth hat, erhalte ich diese Meldung:

der Artikel Modell in die dicti geben onary ist null, aber dieses Wörterbuch benötigt ein Nicht-Null-Modellelement vom Typ 'System.DateTime'.

Im Modell ProfileEdit ich das Feld haben wie folgt definiert:

[DataType(DataType.Date), Display(Name = "Birth Date")] 
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] 
public DateTime? BirthDate { get; set; } 

Wie kann ich es bekommen die Ansicht zu laden, auch wenn es eine Null ist? Was mache ich falsch?

PS, ich habe andere Beiträge gelesen, die ähnlich sind, von denen die meisten sagen, mein Modell für den Editor Steuerelement nullable machen, aber wie Sie sehen können, mache ich das schon.

Update:

Hier ist die Controller-Aktion (Mapper.Map nimmt einfach das Modell, und füllt das Ansichtsmodell ProfileEdit):

[CheckId(RedirectToReferrer = true)] 
public virtual ActionResult Edit(Guid id) 
{ 
    var profileEdit = Mapper.Map<ProfileEdit>(db.Profile.Find(id)); 

    if (profileEdit == null) 
    { 
     return HttpNotFound(); 
    } 

    return View(profileEdit); 
} 
+0

"Das Modellelement, das an das Wörterbuch übergeben wurde, ist null, aber dieses Wörterbuch benötigt ein Nicht-Null-Modellelement vom Typ 'System.DateTime'." Wo wird das Wörterbuch erklärt und wie wird es erklärt? –

+1

Ich weiß es nicht. Vielleicht benutzt MVC etwas anderes, um den Editor zu rendern. –

+0

Ich habe Ihre Vorlage getestet und es funktioniert ohne Fehler. Zeigen Sie uns Ihre Steuerelementaktion, die die Ansicht sendet – CodeNotFound

Antwort

0

@Mangist richtig war. Es war dieses Attribut:

[DataType(DataType.Date), Display(Name = "Birth Date")] 

Insbesondere der Datentyp, da es Date nicht DateTime wie meine Vorlage für war.

Verwandte Themen