我想在一个文本框上设置一个范围验证器,以防止有人订购超过可用数量的产品。我在数据库中存储了可用的数量,并且将range Validator的最大值属性绑定到数据库中的字段。
<asp:RangeValidator ID="RangeValidator1" runat="server"
ControlToValidate="tbQuantity" Display="Dynamic" ErrorMessage = "Can't Order More Than Quantity."
ForeColor="Red" MaximumValue='<%# Eval("Quantity") %>' MinimumValue="0"></asp:RangeValidator>
然而,当我调试程序时,我得到了一些意想不到的结果。
数量为17。1不会触发错误信息,但2-9会,10-17不会触发,但18及以上会。我猜这与它比较字符串的事实有关,但我不确定如何将其更改为比较数字。
默认范围验证器类型为字符串,将Type
属性更改为Integer
<asp:RangeValidator
ID="RangeValidator1" runat="server"
ControlToValidate="tbQuantity"
Display="Dynamic"
ErrorMessage="Can't Order More Than Quantity."
ForeColor="Red"
MaximumValue='<%# Eval("Quantity") %>'
MinimumValue="0"
Type="Integer" /> // <-- add type property of integer
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.basecomparevalidator.type.aspx 是否尝试将type属性设置为整数?
<asp:RangeValidator ID="RangeValidator1" runat="server"
ControlToValidate="tbQuantity" Display="Dynamic"
ErrorMessage="Can't Order More Than Quantity."
ForeColor="Red" MaximumValue='<%# Eval("Quantity") %>'
MinimumValue="0" Type="Integer">
</asp:RangeValidator>
更多信息可以在这里找到(不要让标题BaseCompareValidator在标题扔你,类型是RangeValidator
控件的有效属性):
BaseCompareValidator。类型属性
protected void RangeValidator5_Init(object sender, EventArgs e)
{
((RangeValidator)sender).MaximumValue = DateTime.Today.ToString("yyyy/MM/dd");
((RangeValidator)sender).MinimumValue = DateTime.Today.AddYears(-100).ToString("yyyy/MM/dd");
}