我有一个表单,用户必须输入一个最小值和一个最大值。对这种情况进行验证的建议是什么?仅服务器验证或客户端和服务器验证。
您如何验证客户的两个输入?您知道这样做的例子吗?
更新
我正在谈论的验证是比较验证(我知道该怎么做的所有其他验证,互联网上有很多示例)。但是,我没有找到具有两个与compare连接的字段的客户端验证。
基本上,您如何对最小值小于max的min进行客户端验证,以及对小于min的max进行客户端验证。或推荐的替代方法是什么?
新更新
我的问题的第一句话似乎已经丢失。在表单上,我有两个输入字段,比如说FieldA和FieldB。 FieldA必须小于FieldB,而FieldB必须大于FieldA。
我的问题是:是否存在有关如何进行这种验证的示例。由于常见的响应是在客户端上进行验证,所以我的问题是应该在两个字段中添加什么验证?如果不满足条件,我是否会使两个字段都无效?如果是,那么在用户更改其中一个字段后,如何使两个字段再次有效。
答案 0 :(得分:4)
两者。
原因:
对于这些技术,根据您的设置,会有负载。您可以将DataAnnotations
与验证属性服务器端一起使用,并且有大量的jquery
,angular
,knockout
等用于客户端javascript的验证插件。
可以找到here的jQueries验证示例:
<script>
$(document).ready(function(){
$("#commentForm").validate({
rules: {
name: "required",
email: {
required: true,
email: true,
},
comment: "required"
}
});});
</script>
注释:如前所述:客户端验证在很大程度上取决于您使用的技术。对于AngularJ,有例如this库。
根据您的要求,进行最小最大(即范围验证),并提供一个具有属性(服务器端)的示例:
//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]
}
}
});
有关详细信息,请参见source。