我有一种情况,在数据库中,我有项目列表,其中包含这样的信息:
[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>
答案 0 :(得分:0)
范围验证器仅检查介于两个参数之间的输入 - 低和高。
您的要求似乎是确保客户只购买完整的包装 - 您可以购买六包装,但不能购买单瓶装。
您可以创建一个访问您编写的代码的自定义验证器 - 这可以正常工作,但涉及服务器端验证。这是一个例子:http://asp.net-tutorials.com/validation/custom-validator/
另一个选项是RegularExpression(RegEx)验证器 - 使用客户端验证。 RegEx可以使用模数(%)运算符来测试您的状况。但是,您必须为每个“ItemPackagingSize”动态创建一个单独的RegEx验证器,该验证器因不同的产品而异。
最后,另一种选择可能是重新定义数量对用户的意义:数量为1意味着1个六包。