【问题标题】:Webforms C# client side validation CustomValidator using WebAPIWebforms C# 客户端验证使用 Web API 的自定义验证器
【发布时间】:2013-10-15 09:51:16
【问题描述】:

基本上我想编写一次我的验证逻辑并在服务器端和客户端使用它。

似乎http://www.asp.net/web-forms/tutorials/hands-on-labs/whats-new-in-web-forms-in-aspnet-45 符合要求,但似乎不支持纯文本输入,所以.....

我正在使用 C# 并编写一个由实体框架 5 支持的 webforms 4.5 应用程序。我正在研究的是如何在不重复验证逻辑的情况下提供验证客户端和服务器端。

假设我有一个文本输入,我想验证其最小长度、存在性、最大长度。我可以在表单上放置一个自定义验证器并编写一些 javascript 代码,但我还必须在后端编写类似的代码。

似乎更好的方法是将验证逻辑封装在后端,然后通过来自 JS 的 HTTP GET 调用该逻辑。这样,如果我需要更改验证逻辑,我会在后面的代码中更新一次,JS 客户端将保持不变,只是调用相同的 GET。

我已经看到了与 MVC / Web One / Web API 相关的各种示例,但看不到如何将其应用于我的提议。

有人有什么建议吗?以前有这样做过吗?如果没有必要,我不想重新实现轮子。

【问题讨论】:

标签: c# javascript validation asp.net-web-api


【解决方案1】:

ASP.NET 为您做到这一点! 您可以在模型类中使用注释,例如:

 [Required, StringLength(100), Display(Name = "Name")]
 public string ProductName { get; set; }

查看本教程:http://www.asp.net/web-forms/tutorials/aspnet-45/getting-started-with-aspnet-45-web-forms/create_the_data_access_layer

您可以使用很多注释,它们也可以用于客户端验证。所以你只需要“写”一次逻辑。

如果标准注解不够用,您可以声明自己的注解。但是您还必须编写客户端验证。这确实是有问题的。对服务器进行 GET 调用以进行验证当然是可能的,但这不是“真正的”客户端验证。在这些情况下,将逻辑保持两次可能是最实用的解决方案。

【讨论】:

  • StringLength() 在验证方面是如何传播到客户端的? IE。这如何导致 Javascript 到达客户端?本教程没有提及任何有关客户端验证的内容。
  • “默认情况下,验证器控件将客户端 ECMAScript (JavaScript) 注入页面以在浏览器中执行验证检查。”来自:link
猜你喜欢
  • 1970-01-01
  • 2014-03-19
  • 2015-12-04
  • 2017-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-26
  • 1970-01-01
相关资源
最近更新 更多