Пользовательская проверка - PullRequest
1 голос
/ 18 декабря 2009

Как люди проверяют данные?

В принципе, у меня есть требование, чтобы подать заявку на страхование, вам должно быть больше 14 лет.

Теперь в заявке вам может потребоваться указать не только ваш возраст, но и дату рождения любого назначенного водителя.

Я просмотрел пример Nerd Dinner, и он работает, но мне было интересно, кто-нибудь делает другие типы проверок.

Ответы [ 5 ]

4 голосов
/ 18 декабря 2009

Вы можете использовать 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.

1 голос
/ 18 декабря 2009

Из практики лучше всего использовать FluentValidation . Единственным недостатком является то, как использовать его на стороне клиента, но если вашему приложению нужны более сложные сообщения и стили на стороне клиента, чем те, которые используются в xVal, то этот способ лучше использовать, в противном случае используйте xVal .

1 голос
/ 18 декабря 2009

Я большой поклонник xVal . Он очень прост в использовании, вы можете легко создавать собственные правила проверки, если это необходимо, и его интеграция с jQuery Validation очень плохая. Посмотри.

0 голосов
/ 18 декабря 2009

Nerd ужин был разработан в качестве примера для "Professional ASP.NET MVC 1.0", его первая глава доступна бесплатно, в основном, проходит через все приложение и охватывает проверки и пользовательские проверки. Вы можете скачать его по адресу:

http://aspnetmvcbook.s3.amazonaws.com/aspnetmvc-nerdinner_v1.pdf

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...