0

我有这个UpdatePanel

  <asp:ScriptManager ID="CheckManager" runat="server" />
  <asp:UpdatePanel ID="checkUsername" runat="server" UpdateMode="Conditional" >
  <ContentTemplate>
  <asp:Label ID="canUse" runat="server" Text=""/>
  <asp:Button ID="check" runat="server" Text="Usable?" onclick="check_Click" />
  <asp:TextBox ID="username" runat="server" ></asp:TextBox>
  </ContentTemplate>
  <Triggers>
  <asp:AsyncPostBackTrigger controlid="check" eventname="Click" />
  </Triggers>
  </asp:UpdatePanel>

更新代码:

 protected void check_Click(object sender, EventArgs e)
    {

        using (HotelEntities h = new HotelEntities())
        {
            UserHandle u = new UserHandle();
            if (u.FindUserByUsername(h, username.Text.ToString()).Any())
            {
                canUse.ForeColor = Color.Magenta;
                canUse.Text = "You cannot use this username";
                username.Text = "";
            }
            else
            {
                canUse.ForeColor = Color.Green;
                canUse.Text = "you can use this username";
            }
        }
    }

但仅当表单中的其他输入(例如具有验证RequiredFieldValidator)有效时才有效。

我怎样才能解决这个问题?

4

2 回答 2

2

为单击 Button 控件时不希望对其执行验证的按钮设置CausesValidation="false" 。

<asp:Button ID="check" CausesValidation="false"  runat="server" 
 Text="Usable?" onclick="check_Click" />

Button.CausesValidation 属性:获取或设置一个值,该值指示单击 Button 控件时是否执行验证。

于 2013-04-02T07:49:02.223 回答
0

您需要将 ValidationGroup 属性设置为与按钮和文本框验证等相同。例如,您在 textBox1 附近有必需的字段验证器。你有两个按钮。如果您不使用 ValidationGroup,您将无法在不验证输入的情况下单击其中任何一个。您可以 在这里查看示例

于 2013-04-02T07:45:56.927 回答