2015-01-05 182 views
0

在ASP-Panel內,AJAX面板內,Content-page內和主頁面內使用FormView EditItemTemplate中的html-table(td)內的ASP-TextBox,ValidationSummary顯示錯誤的ErrorMessage使用SAVE按鈕驗證文本框時。爲什麼ErrorMessage不能正確呈現

ValSummary顯示「輸入的里程少於'<%= txtMileageRangeValidator.MinimumValue%>'英里」。

,而不是「進入行駛里程小於88123英里

的文本框和驗證的標記如下:

<asp:TextBox ID="txtMileage" runat="server" Text='<%# Bind("Mileage") %>' 
    CssClass="ucIsRequired" 
    MaxLength="6" 
    AutoPostBack="True" OnTextChanged="txtMileage_TextChanged" 
/> 
<asp:RangeValidator ID="txtMileageRangeValidator" runat="server" 
    ControlToValidate="txtMileage" 
    Enabled="true" 
    Display="None" 
    MinimumValue='<%# Eval("aMileagePrev", "{0:D}")%>' 
    MaximumValue="999999" 
    SetFocusOnError="false" 
    Type="Integer" 
    ValidationGroup="valgrpDetails" 
    ErrorMessage="Mileage entered is less than '<%= txtMileageRangeValidator.MinimumValue %>' miles" 
    /> 

然而,當錯誤出現在ValidationSummary,它顯示的樣子如上所列 - 它不會將MinimumValue替換爲錯誤文本。

我在做什麼錯? 謝謝。

回答

0

除非禁用,否則RangeValidators驗證在客戶端,即沒有回傳,所以服務器端嵌入式腳本不會重新呈現

如果您要重置文本框事件的最小值,那麼你可以設置ErrororMessage與MinimumValue一樣,但使用修改後的字符串格式

ErrorMessage='<%# Eval("aMileagePrev", "Mileage entered is less than {0:D} miles") %>' 

但是現在我正在讀更近的東西。範圍驗證旨在檢查介於最小/最大值之間的值。你假設該值永遠不會大於maxValue。如果情況總是如此,那麼你會更好地與CompareValidatorType設置爲IntegerOperator設置爲LessThan

+0

優秀的答案!完美的作品...謝謝。最大長度= 6因此值不能超過999999.我也感謝你對CompareValidator的建議。也許你可以協助這個問題? [鏈接] http://stackoverflow.com/questions/27650321/user-control-retains-focus-incorrectly-after-textchanged-postback-when-uc-is-con –