2011-08-05 21 views
6

Tôi muốn đặt Trình xác thực phạm vi trên một hộp văn bản để ngăn người khác đặt hàng nhiều sản phẩm hơn so với khả dụng. Tôi có số lượng có sẵn được lưu trữ trong một cơ sở dữ liệu và tôi databound tài sản giá trị tối đa của Ranged Validator đến trường trong cơ sở dữ liệu.Làm cách nào để đặt giá trị tối đa trên một Trình xác thực phạm vi theo chương trình?

<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> 

Tuy nhiên khi tôi gỡ lỗi chương trình, tôi nhận được một số kết quả không mong muốn.

Số lượng là 17. và 1 không kích hoạt thông báo lỗi, nhưng 2-9 và 10-17 không kích hoạt nhưng từ 18 trở lên thực hiện. Tôi đoán điều này có liên quan đến thực tế là nó so sánh các chuỗi nhưng tôi không chắc chắn làm thế nào để thay đổi nó để so sánh các con số.

Trả lời

5

Phạm vi mặc định loại trình xác thực là chuỗi, hãy thay đổi thuộc tính Type thành 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

3

Bạn đã thử đặt thuộc tính type thành số nguyên không?

<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>  

Thông tin chi tiết có thể được tìm thấy ở đây (đừng để BaseCompareValidator danh hiệu trong tiêu đề ném bạn, Type là một tài sản có giá trị cho RangeValidator điều khiển):

BaseCompareValidator.Type Property

0
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"); 
} 
Các vấn đề liên quan