jQuery UI datepicker funktioniert nicht richtig mit asp.net mvc
Arbeite ich in MVC. Ich habe verwendet jQuery datepicker auf mein "Date" - regler.Der jquery-code für den Aufruf datepicker wird unten gegeben:
$(document).ready(function () {
$('.date').datepicker({ dateFormat: "dd/mm/yy" });
});
Mein DateTime Partialview ist :
@Html.TextBoxFor(x => x.Value, new { id = Model.Name, name = Model.Name, @class = "date", @readonly = true })
und meine DateTimeViewModel Eigenschaften sind :
public string Name { get; set; }
public DateTime? Value { get; set; }
Ich bin mit diesem partial view in eine form. Sobald ich vollständig füllen Sie mein Formular aus und klicken Sie auf "Absenden", der Fokus geht wieder zu meinem datepicker wieder abholen das Datum. Es geschieht wieder und wieder, und meine form sich nicht in der Lage, sich zu Unterwerfen.
Ich debug das Steuerelement auf chrome und ich habe bemerkt, dass das Datum nicht gültig ist, wie unten angegeben:-
<input class="ff date hasDatepicker input-validation-error" data-val="true" data-val-date="The field Value must be a date." name="Fields[Lea_ex1_47].Value" readonly="True" type="text" value="" id="dp1369308655980">
BEARBEITEN
Sorry für die Erwähnung es zu spät, aber ich habe auch beobachtet, dass es jetzt. Mein datepicker unter dem Datum vom 1 bis 12 jeden Monat nur. Das ist: von 30/31 Tage wird es dauern, das Datum von 1 bis 12 (Validierung true) und andere 13 bis 31 geben Fehler bei der überprüfung(Validierung false).
Bitte geben Sie mir Grund, warum dies passiert ist? und wie kann ich loswerden dieser?
Vielen Dank im Voraus..
- Warum haben Sie
readonly = true
? - Basierend auf edit, es ist definitiv das Datum-format. Überprüfen Sie meine Antwort für die Erklärung und wie es zu lösen ist.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist wohl dieser Teil:
Das ist nicht der Standard-Weg .NET zeigt ein Datum an, so jQuery möglicherweise nicht in der Lage zu analysieren. Sie müssen sicherstellen, dass der Tag kommt, bevor der Monat und das Jahr wird 2-stellig.
Edit: Nach dem Lesen Bearbeiten, um die Kontrolle zu Versagen, wenn der Tag größer als 12 ist, das ist definitiv zu verursachen, die. Allerdings, die Probleme, die ich unten erwähnt könnte noch Probleme verursachen, nachdem Sie Sie gelöst haben, das Datum-format.
Andere mögliche Probleme:
Du bist eine Einstellung
readonly
HTML-Attribut, und ich weiß nicht, warum Sie das tun würden:Diese wird entweder gar nichts oder das unterdrücken der datepicker aus aufspringen.
Schließlich, ich merke Sie uns den Namen und die ID von hand:
Das ist der editor für
Model.Value
, also warum verbinden Sie esModel.Name
? Irgendetwas anderes auf Ihrer Seite haben die gleiche ID? Jede andere form-Feld den gleichen Namen haben? Wenn ja, ist es wahrscheinlich zu brechen die Dinge, die auf dem client und dem server. Sie müssen noch nicht einmal angeben; das MVC-helper-Methode kann es für Sie tun., Was zu tun ist:
Zunächst, Anmerkungen ViewModel, wie einige vorgeschlagen haben, aber stellen Sie sicher, dass das format richtig ist:
Sollte das beheben, aber überlegen Sie auch, das entfernen der
id
,name
, undreadonly
Attribute aus, Ihre Razor-code vollständig.Wenn Sie mit HTML5, eine Sache, die könnte helfen, ist die Verwendung
EditorFor
stattTextBoxFor
. Das sollte dazu führen, dass es für die Verwendung mit HTML5 -DateTime
input geben. jQuery-UI sollte keine Schwierigkeiten haben, Umgang mit Textboxen, aber es kann nicht Schaden.mit
UIHint
einfach DatepickerHinzufügen DateTime.cshtml Datei in diesem Pfad Shared/EditorTemplates
Können Sie versuchen, hinzufügen von Anmerkungen zu Ihrer view-Modell-Eigenschaft, wie:
Als workaround bin ich Neuformatierung der Wert der textbox datepicker während vorlegen, so wird es-format zurück zu mm/dd/yy.
beim postback mvc wird in der Lage sein zu wissen, nun das format.
Hoffe, das hilft