Вы можете использовать DataAnnotations для непосредственного присоединения проверки к объектам.
Проверка с помощью валидаторов аннотации данных
Вы можете получить фантазию, создав пользовательские аннотации данных, которые затем позволят вам создать проверку для полей определенного типа.
Так что для вашего возраста требуется;
Итак,
public class IsApplicantOldEnoughAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
if (value == null) return false;
DateTime enteredDate = (DateTime)value;
if ((DateTime.Today.Year - enteredDate.Year) >= 14)
return true;
else
return false;
}
}
Ваша модель может затем украсить поле;
[IsApplicantOldEnough(ErrorMessage="Applicant must be over 14 years of age")]
[Required]
public DateTime DateOfBirth { get; set; }
Тогда, на ваш взгляд;
<p>
<label for="UnitPrice">DOB:</label>
<%= Html.TextBox("DateOfBirth")%>
<%= Html.ValidationMessage("DateOfBirth", "*")%>
</p>
Тогда ваш контроллер может выглядеть так:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Apply([Bind(Exclude = "Id")]Applicant newApplicant)
{
if (!ModelState.IsValid)
return View();
return RedirectToAction("Success");
}
Это немного больше работы, но вам больше не нужно вызывать метод каждый раз, когда вы хотите проверить некоторые данные.
Это также означает, что все приложения, использующие эту модель, будут применять одно и то же бизнес-правило к вашим возрастам, обеспечивая таким образом согласованность во всей организации.
Мне действительно случалось, что вышесказанное было в некотором роде удобным. Я часто использую это в своих объектах. Не забудьте обернуть это в Try / Catch.