【问题标题】:Validation for selecting a minimum and maximum验证选择最小值和最大值
【发布时间】:2019-02-09 09:14:29
【问题描述】:

我有一个表单,用户必须输入最小值和最大值。本案例的验证建议是什么。仅服务器验证或客户端和服务器验证。

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

更新

我所说的验证是比较验证(所有其他验证我都知道怎么做,网上有很多例子)。但是,我没有找到与比较相关的两个字段的客户端验证。

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

新的更新

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

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

【问题讨论】:

标签: c# asp.net-core


【解决方案1】:

两者都有。

原因:

  • 仅限客户端验证:您的服务器将被黑客入侵。
  • 仅限服务器端:您的用户会感到恼火,尽管它比仅客户端更好
  • 两者:快乐的用户,不可破解。不过还有一点点工作。

至于技术,有很多负载,具体取决于您的设置。您可以将DataAnnotations 与服务器端的验证属性一起使用,并且有大量的jqueryangularknockout 等用于客户端javascript 的验证插件。


添加: 正如@bradbury9 所说:server side validation "fairly easy"

jQueries 验证的例子可以找到here:

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

注意:如前所述:客户端验证高度依赖于您使用的技术。对于 AngularJs,例如:this library。


更新

根据您的要求,对于最小值最大值,也就是范围验证,带有属性的示例(服务器端):

//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

【讨论】:

  • 应该指出服务器端验证is fairly easy
  • @bradbury9:我同意。我将其添加到答案中。
  • 我不需要必要的验证。我在询问比较验证。如果最小值小于最大值且最大值大于最小值
  • @Dan:啊,是的,我添加了一个范围验证示例。
  • 啊,那更复杂。我曾经编写了一个自定义服务器端属性来做到这一点。这是一个示例,它带有日期,但可以轻松调整:stackoverflow.com/questions/18577777/…
猜你喜欢
  • 2021-04-16
  • 2014-12-01
  • 2013-11-15
  • 1970-01-01
  • 1970-01-01
  • 2017-07-09
  • 2020-08-19
  • 2020-05-16
  • 1970-01-01
相关资源
最近更新 更多