Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何验证表单,以便在表单中缺少字段或未正确填写字段时返回false_C#_Html_Asp.net - Fatal编程技术网

C# 如何验证表单,以便在表单中缺少字段或未正确填写字段时返回false

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.net页面中有以下表单:

<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();
    }
}