2009-07-07 90 views
0

我有兩個輸入文本框是十進制的。如何在這種情況下使用驗證程序是ASP.NET?

的兩個輸入的總和不能超過100。當輸入1爲40,輸入2不能超過60

我需要做客戶端的一切,需要讓客戶輸入任何值。如果輸入的值超過極限,我需要顯示驗證錯誤消息:

Page.isValid = false 

現在我必須爲每個輸入框兩個獨立的驗證,但我不知道如何改變兩個驗證的valueToCompare在客戶端。

請指教,

感謝

回答

4

你應該看看使用CustomValidator控件的總和。 Here's一篇文章,引導您使用它。

你的代碼可能看起來是這樣的:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" 
    Inherits="WebApplication1._Default" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head runat="server"> 
    <title></title> 
    <script type="text/javascript"> 
     function validateTextBoxen(sender, args) { 
     // You'll have more thorough validation, I'm sure 
     var value1 = parseFloat(
      document.getElementById('<%=textBox1.ClientID%>').value); 
     var value2 = parseFloat(
      document.getElementById('<%=textBox2.ClientID%>').value); 
     args.IsValid = (value1 + value2) < 100; 
     } 
    </script> 
    </head> 
    <body> 
    <form id="form1" runat="server"> 
     <div> 
     <asp:TextBox ID="textBox1" runat="server" /> 
     <asp:TextBox ID="textBox2" runat="server" /> 
     <asp:CustomValidator runat="server" EnableClientScript="true" 
      OnServerValidate="onCustomValidation" ID="customValidator" 
      ErrorMessage="Invalid!" 
      SetFocusOnError="true" ClientValidationFunction="validateTextBoxen"/> 
     <asp:Button runat="server" OnClick="button_Click"/> 
     <asp:Literal runat="server" ID="placeholder" /> 
     </div> 
    </form> 
    </body> 
</html> 

代碼隱藏:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace WebApplication1 
{ 
    public partial class _Default : System.Web.UI.Page 
    { 
     protected void onCustomValidation(
      object sender, ServerValidateEventArgs e) 
     { 
      float value1 = 0f; 
      float value2 = 0f; 
      if (!float.TryParse(textBox1.Text, out value1) 
       || !float.TryParse(textBox2.Text, out value2) 
       || value1 + value2 > 100f) 
      { 
       e.IsValid = false; 
      } 
     } 

     protected void button_Click(object sender, EventArgs args) 
     { 
      placeholder.Text = Page.IsValid ? "Valid" : "Invalid"; 
     } 
    } 
} 
0

如今,以驗證HTML表單IMO最好的辦法就是用一個jQuery插件like this one

0

在客戶端,對按鈕的點擊,則使用ClientClick屬性,並將其設置爲javascript函數名驗證輸入

例如

<asp:Button ID="btnSubmit" OnClientClick=" return validate()" runat="server" Text="Submit" ></asp:Button> 

和JavaScript編寫了一個validate()函數,它檢查兩個輸入