C# 如何验证表单,以便在表单中缺少字段或未正确填写字段时返回false
我的ASP.net页面中有以下表单:C# 如何验证表单,以便在表单中缺少字段或未正确填写字段时返回false,c#,html,asp.net,C#,Html,Asp.net,我的ASP.net页面中有以下表单: <asp:UpdatePanel runat="server" ClientIDMode="Static" ID="upReg" UpdateMode="Conditional"> <ContentTemplate> <div class="dvHolder hidOverflow clearfix"> <input id="txtFirst"
<asp:UpdatePanel runat="server" ClientIDMode="Static" ID="upReg" UpdateMode="Conditional">
<ContentTemplate>
<div class="dvHolder hidOverflow clearfix">
<input id="txtFirst" type="text" name="login" value="" placeholder="First Name" runat="server" />
<asp:Label Text="" runat="server" ID="lblRFName" CssClass="lblStyle" />
</div>
<div class="dvHolder hidOverflow clearfix">
<input id="txtLast" type="text" name="login" value="" placeholder="Last Name" runat="server" />
<asp:Label Text="" runat="server" ID="lblRLName" CssClass="lblStyle" />
</div>
<div class="dvHolder hidOverflow clearfix">
<input id="txtEmail" type="text" name="login" value="" placeholder="Email Address" runat="server" />
<asp:Label Text="" runat="server" ID="lblREmail" CssClass="lblStyle" />
</div>
<div class="dvHolder hidOverflow clearfix">
<input id="txtUser" type="text" name="login" value="" placeholder="Username" runat="server" />
<asp:Label Text="" runat="server" ID="lblRUser" CssClass="lblStyle" />
</div>
<div class="dvHolder hidOverflow clearfix">
<input id="txtPass" type="password" name="login" value="" placeholder="Password" runat="server" />
<asp:Label Text="" runat="server" ID="lblRPass" CssClass="lblStyle" />
</div>
<div class="dvHolder hidOverflow clearfix">
<input id="txtPassC" type="password" name="login" value="" placeholder="Confirm Password" runat="server" />
<asp:Label Text="" runat="server" ID="lblRPassC" CssClass="lblStyle" />
</div>
<div class="dvHolder hidOverflow clearfix setTextRight">
<asp:Button ID="btnRegister" ClientIDMode="Static" runat="server" Text="Register" OnClick="btnRegister_Click" />
<asp:Label runat="server" Text="" ID="lblSuccess" ClientIDMode="Static" />
</div>
</ContentTemplate>
</asp:UpdatePanel>
</div>
我遇到的问题是因为它是连续的,如果我丢失了电子邮件地址,但密码是正确的,它将返回true
如何修改代码,以便在任何字段缺失或未正确填写时,blnFrmComplete
将为false,并且不会检查代码的其余部分。您应该查看:
<asp:RequiredFieldValidator id="RequiredFieldValidator2"
ControlToValidate="TextBox1"
Display="Static"
InitialValue=""
ErrorMessage="*"
runat="server"/>
不要在其他任何地方将您的blnFrmComplete
设置为true
,只需将其保留为true
,并且仅当某些内容无效时,才允许他们将其更改为false。任何东西都不应该将其设置回true
因此,将布尔值设为true,只有在某些内容无效时才将其切换为false。如果没有无效内容,则布尔值仍然为true。您应该使用验证方法,而不是按钮单击处理程序。如果检测到无效,请立即返回:
bool IsFormValid()
{
bool valid = !string.IsNullOrWhiteSpace(txtFirst.Value);
if(!valid)
{
lblRFName.Text = "Please enter your first name";
return false;
}
valid = !string.IsNullOrWhiteSpace(txtLast.Value);
if(!valid)
{
lblRLName.Text = "Please enter your last name";
return false;
}
// ...
valid = !string.IsNullOrWhiteSpace(txtEmail.Value);
if (!valid)
{
lblREmail.Text = "Please enter your email address";
return false;
}
// ...
return true;
}
public void btnRegister_Click(object sender, EventArgs e)
{
if (IsFormValid())
{
CreateNewUser();
upReg.Update();
}
}
但是如果是ASP.NET,您应该使用可用的验证器,如RequiredFieldValidator
,这是一种更好的方法。您使用的是WebForms
-为什么不使用验证控件?另外,您的HTML服务器输入控件字段name
都是login
?
bool IsFormValid()
{
bool valid = !string.IsNullOrWhiteSpace(txtFirst.Value);
if(!valid)
{
lblRFName.Text = "Please enter your first name";
return false;
}
valid = !string.IsNullOrWhiteSpace(txtLast.Value);
if(!valid)
{
lblRLName.Text = "Please enter your last name";
return false;
}
// ...
valid = !string.IsNullOrWhiteSpace(txtEmail.Value);
if (!valid)
{
lblREmail.Text = "Please enter your email address";
return false;
}
// ...
return true;
}
public void btnRegister_Click(object sender, EventArgs e)
{
if (IsFormValid())
{
CreateNewUser();
upReg.Update();
}
}