Проверка правильности выбора минимума и максимума

У меня есть форма, где мин и макс должны быть введены пользователем. Какова рекомендация для проверки для этого случая. Только проверка сервера или проверка клиента и сервера.

Как вы проверяете на клиенте оба входа? Вы знаете пример, который делает это?

ОБНОВИТЬ

Валидация, о которой я говорю, это валидация сравнения (все другие валидации, которые я знаю, как делать, в интернете есть много примеров). Однако я не нашел проверки клиента на наличие двух полей, связанных со сравнением.

В основном, как вы выполняете проверку клиента для min, что у него значение меньше, чем max, и проверку для max, что у него значение меньше min. Или каковы рекомендуемые альтернативы этому.

НОВОЕ ОБНОВЛЕНИЕ

Похоже, первая фраза моего вопроса потеряна. На форме у меня есть два поля ввода, скажем, FieldA и FieldB. FieldA должно быть меньше, чем FieldB, а FieldB должно быть больше, чем FieldA.

Мой вопрос относится к: Есть ли пример того, как сделать этот вид проверки. Поскольку общим ответом является проверка на клиенте, тогда мой вопрос заключается в том, какую проверку я должен добавить к двум полям? Делать ли оба поля недействительными, когда условия не выполняются. Если да, то как мне снова сделать оба поля действительными после того, как пользователь изменил одно из полей?

1 ответ

И то и другое.

Причина:

  • только проверка клиента: ваш сервер будет взломан.
  • только на стороне сервера: ваши пользователи будут раздражены, хотя это лучше, чем только на стороне клиента
  • оба: счастливые пользователи, не взломанные. Немного больше работы, хотя.

Что касается методов, есть нагрузки, в зависимости от вашей настройки. Вы могли бы использовать DataAnnotations с атрибутами проверки на стороне сервера, и есть тонны jquery, angular, knockout и т. д. плагины проверки для клиентского JavaScript.


Дополнение: Как утверждает @bradbury9: проверка на стороне сервера "довольно проста"

Пример проверки jQueries можно найти здесь:

<script>
$(document).ready(function(){
    $("#commentForm").validate({
       rules: {
          name: "required",
          email: {
                   required: true,
                   email: true,
                 },
          comment: "required"
     }
});});
</script>

примечание: как указано выше: проверка на стороне клиента сильно зависит от используемой вами методики. Для AngularJs есть, например: эта библиотека.


Обновить

По вашему запросу, для min max, также известного как проверка диапазона, пример с атрибутами (на стороне сервера):

//model
public class Foo
{
    [Range(1, 100)]
    [DataType(DataType.Currency)]
    public decimal Price { get; set; }
} 

И контроллер:

// POST: Movies/Create
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(Foo foo)
{
    if (!ModelState.IsValid)
    {
      //error
    }
}

И сторона JavaScript:

$( "#commentForm").validate({
  rules: {
    field: {
      required: true,
      range: [13, 23]
    }
  }
});

Смотрите источник для деталей.

Другие вопросы по тегам