Я решил начать работу с 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; }
}
И моя форма записи написана таким образом для дат:
<table>
<tr>
<td>
<div class="editor-label">
@Html.LabelFor(model => model.StartDate)
</div>
</td>
<td>
<div class="editor-label">
@Html.LabelFor(model => model.EndDate)
</div>
</td>
</tr>
<tr>
<td>
<div class="editor-field">
@Html.TextBoxFor(model => model.StartDate, new { @class = "datepicker", id="txtStartDate" })
@Html.ValidationMessageFor(model => model.StartDate)
</div>
</td>
<td>
<div class="editor-field">
@Html.TextBoxFor(model => model.EndDate, new { @class = "datepicker", id = "txtEndDate" })
@Html.ValidationMessageFor(model => model.EndDate)
</div>
</td>
</tr>
</table>
Моя проблема в том, что текстовое поле теперь отображается 01/янв./0001 00:00:00. Итак, сначала: как я могу получить дату, которую нужно сформировать для shortdatestring? Я нашел решение MVC2, в котором рекомендуется создать папку EditorTemplates в SharedFolder и использовать EditorFor вместо этого, но это, похоже, не работает с MVC3. Он также, казалось, не позволял добавлять классы легко, как в TextBoxFor
И во-вторых, как только это исправлено, у меня есть специальная система проверки, которую мне нужно создать. Мне нужно, чтобы дата окончания была после даты начала. Я собираюсь сделать чек с помощью javascript, который я нашел http://www.datejs.com, но есть ли способ сделать валидацию непосредственно в моем классе?