DataGrid 中的验证器,使用行中的参数

Validator in DataGrid, using parameters from row

我有一种情况,在数据库中,我有项目列表,其中包含以下信息:

[Item]
* ItemName
* ItemPackagingSize
* AvailableQuantity

用户可以输入他想要获得的物品数量(数量),但是该数量必须满足以下条件:

if(quantity % ItemPackagingSize == 0)
    isValid = true;
else
    isValid = false;

我应该使用什么 ASP.NET 验证器来检查这个东西?或者也许还有其他方法可以做到这一点?

例如,对于 AvailableQuantity 我使用这个:

<asp:RangeValidator ID="RangeValidator" ControlToValidate="OrderQuantity" runat="server" Type="Double" MaximumValue='<%# Container.DataItem["LeftQuantity"] %>' ErrorMessage="Quantity entered is higher than available quantity"></asp:RangeValidator>

范围验证器将只检查落在两个参数之间的输入 - 低和高。

看来您的要求是确保客户只购买整包 - 您可以购买六件装,但不能购买单独的瓶子。

您可以创建一个自定义验证器来访问您编写的代码 - 这可以正常工作,但涉及服务器端验证。这是一个示例:http://asp.net-tutorials.com/validation/custom-validator/

另一个选项是 RegularExpression (RegEx) 验证器 - 使用客户端验证。 RegEx 可以利用模数 (%) 运算符来测试您的条件。但是,您必须为每个随不同产品而变化的 'ItemPackagingSize' 动态创建一个单独的 RegEx 验证器。

最后,另一种选择可能是重新定义您对用户的数量的含义:数量 1 表示 1 件六件装。