是否足够使用asp.net验证器?

use*_*032 1 c# asp.net validation requiredfieldvalidator

我正在使用asp.net验证,如必填字段验证器等.我想知道是否足够把这些验证器或后端的东西也应该完成?我的意思是它工作得很好,但我曾经听说验证也应该在后端等完成,因为客户端验证可以关闭,这将导致应用程序崩溃?这是真的吗?

例如

<asp:TextBox ID="txtFrom" runat="server"></asp:TextBox>
    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
                                ControlToValidate="txtFrom" Display="None" ErrorMessage="" 
                                ForeColor="Red" >
     </asp:RequiredFieldValidator>
    &nbsp; To :
    <asp:CalendarExtender ID="Calender" Format="dd/MMM/yyyy" runat="server" TargetControlID ="txtFrom"></asp:CalendarExtender>
    <asp:TextBox ID="txtTo" runat="server"></asp:TextBox>
      <asp:CalendarExtender ID="CalendarExtender1" Format="dd/MMM/yyyy" runat="server" TargetControlID ="txtTo"></asp:CalendarExtender>
    <asp:RequiredFieldValidator ID="RequiredFieldValisdator9" runat="server" 
                                ControlToValidate="txtTo" Display="None" ErrorMessage="" 
                                ForeColor="Red" >
     </asp:RequiredFieldValidator>
Run Code Online (Sandbox Code Playgroud)

伙计们,感谢您的回复,我试图验证提交按钮上的页面,像这样,是否正确?

protected void btnGenReport_Click(object sender,EventArgs e){//此事件生成特定日期之间投诉的报告.

    try
    {
       //my report binding code

    }
    catch (Exception ex)
    {
        Response.Write(ex.Message.ToString());
    }

    Page.Validate();
    if (Page.IsValid)
    {
        txtFrom.Text = "Validated";
    }
    else 
    {
        txtFrom.Text = "NOT VALIDATED";
    }

}
Run Code Online (Sandbox Code Playgroud)

Pat*_*man 5

如果客户端上没有javascript(不太可能,但可能),您最终可能会关闭验证.此外,有人可以尝试通过将数据直接发布到您的网站来规避您的支票.

对于这些情况,您始终需要服务器端验证.

根据MSDN:验证ASP.NET服务器控件(强调我的):

使这些验证服务器控件有效的原因是,当请求包含这些控件的ASP.NET页面时,它是ASP.NET引擎决定是在客户端还是在服务器执行验证,具体取决于正在进行的浏览器请求.

似乎验证使用一个,而不是两个.

您可以Page.Validate()按照Tim Schmelter的建议,通过调用确保数据有效.

  • +1我没有意识到只有JS不可用时才进行服务器端检查 (2认同)