Я решил начать работу с MVC 3, и я столкнулся с этой проблемой при попытке переделать одно из моих веб-приложений на MVC3.
У меня есть проекты, настроенные следующим образом:
public class Project
{
public int ProjectID { get; set; }
[Required(ErrorMessage="A name is required")]
public string Name { get; set; }
[DisplayName("Team")]
[Required(ErrorMessage="A team is required")]
public int TeamId { get; set; }
[DisplayName("Start Date")]
[Required(ErrorMessage="A Start Date is required")]
[DisplayFormat(ApplyFormatInEditMode=true, DataFormatString="{0:d}")]
public DateTime StartDate { get; set; }
[DisplayName("End Date")]
[Required(ErrorMessage="An End Date is required")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:d}")]
public DateTime EndDate { get; set; }
}
И моя форма записи для дат написана следующим образом:
@Html.LabelFor(model => model.StartDate)
@Html.LabelFor(model => model.EndDate)
@Html.TextBoxFor(model => model.StartDate, new { @class = "datepicker", id="txtStartDate" })
@Html.ValidationMessageFor(model => model.StartDate)
@Html.TextBoxFor(model => model.EndDate, new { @class = "datepicker", id = "txtEndDate" })
@Html.ValidationMessageFor(model => model.EndDate)
Моя проблема в том, что в текстовом поле теперь отображается 01 / Jan / 0001 00:00:00. Итак, во-первых: как я могу преобразовать дату в shortdatestring? Я нашел решение MVC2 , которое советовало создать папку EditorTemplates в SharedFolder и использовать вместо нее EditorFor, но это, похоже, не работает с MVC3. Кроме того, казалось, что это легко предотвращает добавление классов, как в случае с TextBoxFor
. А во-вторых, как только это исправлено, у меня есть специальная система проверки, которую мне нужно внедрить. Мне нужно, чтобы дата окончания была ПОСЛЕ даты начала. Я подумываю выполнить проверку с помощью javascript, который нашел http://www.datejs.com , но есть ли способ выполнить проверку непосредственно в моем классе?