繁体   English   中英

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

[英]How to validate this data entry form in ASP.NET Web Forms?

我是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!");

    }

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

您可以从Visual Studio工具箱使用ASP.NET验证控件:

使用RequiredFieldValidator

CompareValidator

RangeValidator控件

的RegularExpressionValidator

的CustomValidator

DynamicValidator

的ValidationSummary

来自探索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; }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM