У меня есть поле даты (я использую средство выбора даты jquery ui) в форме, которую я отформатировал, например так:
ViewModel
[DisplayFormat(DataFormatString = "{0:dd-MMM-yyyy}", ApplyFormatInEditMode = true)]
public DateTime FooDate { get; set; }
View
@Html.EditorFor(m => m.FooDate)
Это правильно показывает дату так, как я хочу, например, 09-Nov-2011
Проблема, с которой я сталкиваюсь, возникает, когда я нажимаю "Отправить". Мне все время говорят, что дата недействительна .... она действительна, глупая вещь!
Есть ли способ, я могу заставить jquery / ненавязчивый javascript игнорировать это поле или позволить этому формату пройти? Пока что единственный способ заставить форму работать - если я не отформатирую дату или не использую {0: d} в качестве формата даты для нее.
Редактировать :
Я создал совершенно отдельный макет + представление + контроллер + модель для тестирования этой глупости. Все еще не работает в IE / Safari.
У меня есть последние jquery.validate / ненавязчивые файлы из Nuget.
Мой layout
пуст. Он просто загружает следующие файлы:
"jquery-1.7.min.js"
"jquery-ui-1.8.16.min.js"
"jquery.validate.min.js"
"jquery.validate.unobtrusive.min.js"
Моя TestViewModel проста:
public class TestViewModel
{
[Display(Name = "Test Date:")]
[DisplayFormat(DataFormatString = "{0:dd/MMM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime? TestDate { get; set; }
}
Мой TestController работает следующим образом:
public class TestController : Controller
{
public ActionResult Index()
{
var m = new TestViewModel();
m.TestDate = DateTime.Now;
return View(m);
}
}
My View:
@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" />
}
Не работает.
Вы знаете, что раздражает? Если я изменю TestDate
на строку, она все равно не будет выполнена.