1

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

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

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

4

1 回答 1

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

于 2013-10-15T19:57:18.300 回答