2015-05-14 25 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也是。