Проверка правильности выбора минимума и максимума
У меня есть форма, где мин и макс должны быть введены пользователем. Какова рекомендация для проверки для этого случая. Только проверка сервера или проверка клиента и сервера.
Как вы проверяете на клиенте оба входа? Вы знаете пример, который делает это?
ОБНОВИТЬ
Валидация, о которой я говорю, это валидация сравнения (все другие валидации, которые я знаю, как делать, в интернете есть много примеров). Однако я не нашел проверки клиента на наличие двух полей, связанных со сравнением.
В основном, как вы выполняете проверку клиента для 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]
}
}
});
Смотрите источник для деталей.