asp.net - 如何管理复杂的数据输入验证

标签 asp.net validation

当我开发 ASP.NET Webform 应用程序时,我感觉自己正在与潮流作斗争。我经常遇到同样的问题,虽然我最终找到了某种解决方法,但我对结果从未完全满意。

这是一个典型问题的示例:

设计需要网格或类似网格的结果集。该结果集是从数据库中提取的,但是,每行上还有一些未绑定(bind)数据的附加控件,但它们的内容用于将数据插入到其他记录中。

一个很好的例子是显示产品列表,然后根据输入数量字段的值以及每个产品选择的选项将选定的产品添加到购物车。再加上您必须允许同时将多条线路添加到购物车,它开始变得更加复杂。

让我们添加到该组合中,您不能一起选择某些产品(互斥),您只能选择一定数量的一种产品,而不能选择另一种产品,当用户选择其商品时,价格可能会发生变化,您根据购买的数量(每个商品和整个订单)获得每件商品的总体折扣,您正在使用信用额度并且不能超过信用额度,您购买的给定商品也不能超过任意数量由您的账户代表在您的账户或产品中设置的金额(想想政府限制您可以购买的某些非处方药),等等..等等..等等..

一开始是一个带有添加到购物车的简单网格,后来变成了一堆无可救药的业务逻辑,当然需要验证并向用户通知他们选择中的各种错误。

如何处理 ASP.NET 中非常复杂的数据输入方案?您如何开始设计一个软件来完成这一切?

编辑:

请不要建议更改界面,因为界面不是问题。用户对此很满意,并且要求它按其应有的方式运行。我正在寻求有关如何设计和解决实现问题的帮助。

最佳答案

不要在代码中放置除基本验证之外的任何内容。背后的代码应该只获取用户输入的内容,构建业务对象(或业务对象的集合)并让这些业务对象验证自身。

每个业务规则应该是业务对象上的单个函数调用,仅处理一个规则,而不处理其他任何事情。然后,您只需依次调用它们并跟踪哪些通过,哪些失败。

当验证失败时,业务对象可以提供足够信息背后的代码,以便它可以显示正确的错误并突出显示有错误的字段。

关于asp.net - 如何管理复杂的数据输入验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3955921/

相关文章:

java - Spring 2.5 表单验证在 validator 实现中发现的错误不会更新 View <form :error/> tags

ruby-on-rails - 根据另一个属性值验证一个属性的值

forms - 如何验证至少应选中一个复选框?

c# - Server.MapPath 在使用网络图像裁剪库时抛出错误

javascript - 如何在asp.net中将下拉列表中的复选框的选定选项显示到文本框

ASP.NET 服务器不异步处理页面

ruby-on-rails - validates_associated 模型与条件

javascript - 远程验证

c# - 何时覆盖 ActionFilterAttribute.OnActionExecutingAsync()?

c# - 创建日历控件的想法