2015-05-14 27 views
0

我想驗證textbox,以便firstNameTextBoxText值與nicknameTextBox不同。我使用的RequiredFieldValidatorInitialValue財產,這樣的 -驗證文本框,使其值不同於另一個文本框

fieldValidatorInitialValue.InitialValue = firstNameTextBox.Text; 

下面是代碼:

 RequiredFieldValidator fieldValidatorInitialValue = new RequiredFieldValidator(); 
     TextBox firstNameTextBox = new TextBox(); 
     TextBox nicknameTextBox = new TextBox(); 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      Button submitButton = new Button(); 
      submitButton.CausesValidation = true; 
      submitButton.Click += submitButton_Click; 
      nicknameTextBox.ID = "nickname"; 
      firstNameTextBox.ID = "firstname"; 
      fieldValidatorInitialValue.ControlToValidate = firstNameTextBox.ID; 
     } 

     protected void submitButton_Click(object sender, EventArgs e) 
     { 
      fieldValidatorInitialValue.InitialValue = nicknameTextBox.Text; 
     } 

但是,使用此代碼驗證工作不正常,只有在第二次點擊按鈕。我也試過把所有的RequiredFieldValidator代碼改爲submitButton_Click事件處理程序,但是在這種情況下它根本不起作用,請問有人可以幫我嗎?

+0

in pageload把條件if(!ispostback){} –

+0

這是不是比較驗證程序的一個被察覺的情況? https://msdn.microsoft.com/en-us/library/db330ayw(v=vs.71).aspx – Anil

回答

2

嘗試this.you應該使用CompareValidator,而不是使用RequiredFieldValidator,與運營商= 「NotEqual」

<asp:CompareValidator runat="server" 
        ControlToValidate="tbFName" 
        ControlToCompare="tbLName" 
        Type="String" 
        Operator="NotEqual" 
        ErrorMessage="First and last name cannot be the same" /> 
0

試試下面的代碼

protected void Page_Load(object sender, EventArgs e) 
    { 
     if(!IsPostBack) 
     { 
     Button submitButton = new Button(); 
     submitButton.CausesValidation = true; 
     submitButton.Click += submitButton_Click; 
     nicknameTextBox.ID = "nickname"; 
     firstNameTextBox.ID = "firstname"; 
     fieldValidatorInitialValue.ControlToValidate = firstNameTextBox.ID; 
     } 
    } 
0

我覺得你現在的樣子嘗試比較「名字「和」尼克 名稱「是不必要的複雜。 而不是你可以簡單地使用CompareValidator,並實現單一按鈕單擊相同的任務。在這裏,加入這個您 設計師頁:

<asp:CompareValidator ID="comNames" runat="server" 
    ControlToValidate="firstNameTextBox" 
    ControlToCompare="nicknameTextBox" 
    ErrorMessage="Error: Name cant be same" 
    SetFocusOnError="True" Text="*"></asp:CompareValidator> 

如果你想添加驗證動態,添加CompareValidator 而不是使用RequiredFieldValidator,並添加以下屬性:

ControlToValidate="firstNameTextBox" 
ControlToCompare="nicknameTextBox" 
ErrorMessage="Error: Name cant be same" 
SetFocusOnError="True" 
Text="*" 

注意:如果您使用ValidationGroup作爲按鈕,請使用相同的名稱 ValidatorGroup for Validator也是。