如何在 Web 窗体中验证此数据输入表单 ASP.NET

本文关键字:输入 数据 表单 ASP NET 验证 Web 窗体 | 更新日期: 2023-09-27 17:56:20

我是 ASP.NET WebForms开发人员的新人,我正在努力验证数据输入表单。我应该只使用服务器端验证,它必须使用纯 C#。我想知道是否有最好的方法来验证以下表单,而不是使用多个嵌套的 if-else 语句,这会造成混乱并使代码非常难以理解。

ASP.NET 形式:

<div class="form-horizontal">
                <div class="form-group">
                    <label class="control-label col-xs-2">Type</label>
                    <div class="col-xs-4">
                        <asp:TextBox ID="txtType" runat="server"></asp:TextBox>
                    </div>
                    <label class="control-label col-xs-2">Category</label>
                    <div class="col-xs-4">
                        <asp:TextBox ID="txtCategory" runat="server"></asp:TextBox>
                    </div>
                </div>
                <div class="form-group">
                    <label class="control-label col-xs-2">Item</label>
                    <div class="col-xs-10">
                        <asp:DropDownList ID="ddlItem" runat="server"></asp:DropDownList>
                    </div>
                </div>
                <div class="form-group">
                    <label class="control-label col-xs-2">Issue</label>
                    <div class="col-xs-10">
                        <asp:TextBox ID="txtIssue" runat="server"></asp:TextBox>
                    </div>
                </div>
                <div class="form-group">
                    <label class="control-label col-xs-2">Suggestion</label>
                    <div class="col-xs-10">
                        <asp:TextBox ID="txtSuggestion" runat="server"></asp:TextBox>
                    </div>
                </div>

                <div class="form-group">
                    <label class="control-label col-xs-2">Reference</label>
                    <div class="col-xs-10">
                        <asp:TextBox ID="txtReference" runat="server"></asp:TextBox>
                    </div>
                </div>
                <div class="form-group">
                    <label class="control-label col-xs-2">Priority</label>
                    <div class="col-xs-10">
                        <asp:DropDownList ID="ddlPriority" runat="server"></asp:DropDownList>
                    </div>
                </div>
</div>

我目前验证表单的方法是使用 if-else 语句,例如:

 string type = string.Empty;
            string category = string.Empty;
            string issue = string.Empty
            string suggestion = string.Empty;
            string Reference = string.Empty;


            if (!string.IsNullOrWhiteSpace(txtType.Text))
    {
        type = txtType.Text.Trim();
        if (!string.IsNullOrWhiteSpace(txtCategory.Text))
        {
                            category = txtCategory.Text.Trim();
                            if(!string.IsNullOrWhiteSpace(txtIssue.Text))
                            {
                               issue = txtIssue.Text.Trim();
                               if(!string.IsNullOrWhiteSpace(txtSuggestion.Text))
                               {
                                  suggestion = txtSuggestion.Text.Trim();
                            try
                            {
                            //to do the operation
                            }
                            catch (Exception ex)
                            {
                                            throw ex;
                            }
                               }
                               else
                               {
                                  lblMessage.CssClass = "text-error";
                                  lblMessage.Text = Encoder.HtmlEncode("Please fill out the Suggestion!");                    
                               }
                            }
                            else
                            {
                               lblMessage.CssClass = "text-error";
                               lblMessage.Text = Encoder.HtmlEncode("Please fill out the Issue!");
                            }
        }
        else
        {
            lblMessage.CssClass = "text-error";
            lblMessage.Text = Encoder.HtmlEncode("Please fill out the Category!");
        }
    }
    else
    {
        lblMessage.CssClass = "text-error";
        lblMessage.Text = Encoder.HtmlEncode("Please fill out the Type!");
    }

运行良好,但我认为它很长,它会造成混乱并使代码非常难以理解。您能否帮助我,在进行操作之前向我展示验证所有输入(或数据输入)的最佳和正确方法?

如何在 Web 窗体中验证此数据输入表单 ASP.NET

可以使用

Visual Studio工具箱中的 ASP.NET 验证控件:

必填字段验证器

比较验证器

范围验证器

正则表达式验证器

自定义验证器

动态验证器

验证摘要

从探索 ASP.NET 验证控件

我的建议:RequiredFieldValidator 控件,它检查是否为输入控件输入了数据。您可以为要对其强制实施必填字段规则的每个表单元素设置一个 RequiredFieldValidator 控件。

<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" Style="top: 98px;
        left: 367px; position: absolute; height: 26px; width: 162px" ErrorMessage="password required"
        ControlToValidate="TextBox2"></asp:RequiredFieldValidator>

另请参阅:如何使用 ASP.NET 验证控件验证用户输入

考虑使用模型验证。例如:

[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }