选择最小和最大的验证

时间:2018-09-04 10:49:34

标签: c# asp.net-core

我有一个表单,用户必须输入一个最小值和一个最大值。对这种情况进行验证的建议是什么?仅服务器验证或客户端和服务器验证。

您如何验证客户的两个输入?您知道这样做的例子吗?

更新

我正在谈论的验证是比较验证(我知道该怎么做的所有其他验证,互联网上有很多示例)。但是,我没有找到具有两个与compare连接的字段的客户端验证。

基本上,您如何对最小值小于max的min进行客户端验证,以及对小于min的max进行客户端验证。或推荐的替代方法是什么?

新更新

我的问题的第一句话似乎已经丢失。在表单上,​​我有两个输入字段,比如说FieldA和FieldB。 FieldA必须小于FieldB,而FieldB必须大于FieldA。

我的问题是:是否存在有关如何进行这种验证的示例。由于常见的响应是在客户端上进行验证,所以我的问题是应该在两个字段中添加什么验证?如果不满足条件,我是否会使两个字段都无效?如果是,那么在用户更改其中一个字段后,如何使两个字段再次有效。

1 个答案:

答案 0 :(得分:4)

两者。

原因:

  • 仅客户端验证:您的服务器将被黑客入侵。
  • 仅服务器端:虽然比仅客户端端更好,但您的用户会感到烦恼
  • 两者:满意的用户,无法破解。不过,还有更多工作要做。

对于这些技术,根据您的设置,会有负载。您可以将DataAnnotations与验证属性服务器端一起使用,并且有大量的jqueryangularknockout等用于客户端javascript的验证插件。


加成: 如@ bradbury9所述:server side validation "fairly easy"

可以找到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