2016-09-22 4 views
-1
anhängen

Ich versuche, das ausgewählte Datum aus dem jQueryUI-Datapicker an das Modell zu binden, das im Controller verwendet werden soll, aber es gibt null zurück. Ich kann den ausgewählten Wert abzurufen, wenn FormcollectionAusgewähltes Datum von jqueryui datepicker an Modell

Ansichtsmodell verwendet wird

public class EmpViewModel 
{ 
    public int EmpId { get; set; } 

    public string FirstName { get; set; } 
    public string LastName { get; set; } 

    public DateTime DateOfBirth { get; set; } 

} 

Ansicht

<div class="col-md-10"> 
    @Html.EditorFor(model => model.DateOfBirth, 
      new { htmlAttributes = new { @class = "form-control datefield" } }) 
</div> 

-Controller

public ActionResult Create(EmpViewModel emp) 
{ 
} 

die Methode in der folgenden Artikel versucht, aber couldn‘ t es funktioniert http://www.asp.net/mvc/overview/older-versions/using-the-html5-and-jquery-ui-datepicker-popup-calendar-with-aspnet-mvc/using-the-html5-and-jquery-ui-datepicker-popup-calendar-with-aspnet-mvc-part-4

Script

<script> 
    $(function() { 
     $(".datefield").datepicker(); 
    }) 
</script> 
+0

dass Tutorial 5 Jahre alt ist, was Ihre MVC-Version? Bitte fügen Sie Ihr 'EmpViewModel' ein. – naveen

+0

@naveen - MVC 5, inklusive Viewmodel – user3543878

+0

Zeigen Sie den jquery Code, den Sie für den Datepicker verdrahtet haben. – Jecoms

Antwort

0

Es gibt mehrere Lösungen picker in Ansichtsmodell zu binden, aber diese beiden sind gewöhnlichsten:

Zuerst versuchen auf EditorFor ein id-Attribut deklarieren und binden jQuery Datepicker zu.

@Html.EditorFor(model => model.DateOfBirth, 
      new { htmlAttributes = new { @id = "DateOfBirth", @class = "form-control datefield" } }) 

<script> 
    $(function() { 
     $("#DateOfBirth").datepicker(); 
    }); 
</script> 

Zweitens versuchen HttpPost Attribut auf Ihrem Controller-Methode, wenn Ihr Modell mit Formularübermittlung an die Steuerung übergeben und ModelState.IsValid verwenden, wenn notwendig.

[HttpPost] 
public ActionResult Create(EmpViewModel emp) 
{ 
    if (ModelState.IsValid) 
    { 
     // do something 
    } 
} 

Wenn diese Lösungen immer noch nicht funktionieren, EditorFor zu TextBoxFor ändern und überprüfen, wie die Vorlage sowohl Form Sammlung Parameter und Modellbindungsschema verwendet, funktioniert.

Zusätzliche Dinge mit beschäftigen:

  1. Stellen Sie sicher, Ihre EditorFor eingeschlossen innerhalb <form> Tag oder versuchen @using (Html.BeginForm("Create", "Controller", FormMethod.Post)) und legen Sie die EditorFor in seinem Inneren.

  2. das Datumsformat von Datumsauswahl ist durch System.DateTime erkennbar, in richtigen Format geliefert Stellen Sie sicher, auf JS-Format verlassen Sie sich nicht (vermeiden toLocaleDateString wenn überhaupt verwendet wird). Verwenden Sie die momentjs-Bibliothek, wenn Sie ein bestimmtes Datumsformat verwenden möchten.

  3. Stellen Sie sicher, dass jQuery ordnungsgemäß geladen ist. Überprüfen Sie in Ihrer Browserkonsole die Anwesenheit von jQuery nach dem Laden der Seite (siehe Meldung).

  4. Versuchen Sie die Ebene DateTime als Nullable-DateTime Einstellung: public DateTime? DateOfBirth { get; set; } und fügen Sie einen Code gegen Null-Wert zu überprüfen.

ähnliche Probleme als weitere Referenz:

MVC 4 DatePicker's selected value not getting set to model

Bind Datetime Model value to datepicker and pass them to controller method

+0

Die Implementierung des ersten Punktes durch Hinzufügen der ID bindet das falsche Datum vom 01/01/0001 12:00: 00 AM, wie kann ich sicherstellen, dass das von Datepicker bereitgestellte Datumsformat im richtigen Format ist, das von System.DateTime erkannt wird? – user3543878

+0

Versuchen Sie 'console.log ($ (" # DateOfBirth "). Val())' oder eine ähnliche Methode auf der Client-Seite zu verwenden, um den von 'EditorFor' angegebenen Datetime-Ausgabewert zu erhalten. Sie können überprüfen, ob die Konsolenausgabe als richtiges 'DateTime'-Format geeignet ist, wenn sie an das Modell übergeben wird. –

+0

Verwenden Sie moment.js (http://momentjs.com/) – garethb

Verwandte Themen