Webforms C#客户端验证使用WebAPI的CustomValidator

时间:2013-10-15 09:51:17

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

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

似乎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相关的各种示例,但无法看到我如何将其应用于我提议的内容。

有人有任何建议吗?以前做过吗?如果我不需要,我不想重新实现轮子。

1 个答案:

答案 0 :(得分:0)

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调用服务器进行验证当然是可能的,但这不是真正的"真实的"客户端验证。在这些情况下,保持逻辑两次可能是最实用的解决方案。