MVC3 Unaufdringlich Datum Überprüfung auf einer benutzerdefinierten formatierten Datum

Ich habe ein Feld "Datum" (ich verwende das jquery ui datepicker) in einer form, die ich formatiert habe, etwa so:

ViewModel

[DisplayFormat(DataFormatString = "{0:dd-MMM-yyyy}", ApplyFormatInEditMode = true)]
public DateTime FooDate { get; set; }

Ansicht

@Html.EditorFor(m => m.FooDate)

Diese korrekt zeigt das Datum, die Art, wie ich es haben wollen, z.B. 09-Nov-2011

Das problem, das ich immer bin, tritt auf, wenn ich drücken Sie senden. Es sagt mir, das Datum ist nicht gültig.... Es gilt, Sie dummes Ding!

Gibt es eine Möglichkeit, die ich bekommen kann jquery/unobtrusive javascript ignorieren Sie dieses Feld, oder erlauben, dieses format zu übergeben? So weit, die einzige Art, wie ich die form zu arbeiten, ist, wenn ich nicht das Datum zu formatieren, oder verwenden Sie {0:d} als Datum-format für Sie.

Bearbeiten:
Ich habe ein völlig eigenes layout+view+controller+Modell für die Erprobung dieses blöde Ding. Funktioniert immer noch nicht im IE/Safari.
Ich habe die neuste jquery.validate/unauffällig Dateien von nuget.

Meine layout leer ist. Es nur lädt Sie die folgenden Dateien:

"jquery-1.7.min.js"
"jquery-ui-1.8.16.min.js"
"jquery.validate.min.js"
"jquery.validate.unobtrusive.min.js"

Meine TestViewModel ist einfach:

public class TestViewModel
{
    [Display(Name = "Test Date:")]
    [DisplayFormat(DataFormatString = "{0:dd/MMM/yyyy}", ApplyFormatInEditMode = true)]
    public DateTime? TestDate { get; set; }
}

Meine TestController geht wie folgt:

public class TestController : Controller
{
    public ActionResult Index()
    {
        var m = new TestViewModel();
        m.TestDate = DateTime.Now;
        return View(m);
    }
}

Meiner Sicht:

@using (Html.BeginForm())
{
    ViewContext.FormContext.ValidationSummaryId = "valSumId";
    @Html.ValidationSummary(false, "The following errors were found:");
    @Html.AntiForgeryToken()

    @Html.LabelFor(m => m.TestDate)
    <input type="date" id="TestDate" value="@Model.TestDate.Value.ToString("dd/MMM/yyyy")" />
    <input type="submit" />
}

No worky.

Wissen Sie, was das ärgerliche Sache ist? Wenn ich TestDate einen string, es immer noch nicht.

  • haben Sie das gleiche Datum-format, wenn Sie erklären den datepicker? $('#date').datepicker({ constrainInput: true, dateFormat: 'D, dd-M-yy'... so etwas wie dieses
  • Ja, habe ich. Lade ich eine Standard-Datum, aus der Sicht, wenn die Seite geladen wird, und es immer noch nicht, wie es
  • Für meinen Fall, ich dint-format das Datum in das Modell, ich mache es direkt in der Ansicht mithilfe von string.format, Validierung übergeben. Vielleicht können Sie einen Versuch haben 🙂
InformationsquelleAutor jzm | 2011-11-09
Schreibe einen Kommentar