有没有办法用户可以在c#中禁用服务器端验证

时间:2015-09-17 16:46:46

标签: c# asp.net validation

我有网络应用程序,用户只能从一个表单输入出生日期。我有asp.net验证器以及在调用save方法之前调用的服务器端验证方法。

以下是服务器端验证的代码:

 private bool ValidateData(out string error)
    {
        error = string.Empty;
        //Validate Date of Birth
        TextBox txtDOB = (TextBox)clientinfo.FindControl("txtDOB");
        if (!string.IsNullOrEmpty(txtDOB.Text.Trim()))
        {
            DateTime dob = Convert.ToDateTime(txtDOB.Text.Trim());

            if (dob >= DateTime.Now.Date)
            {
                error = error + "Client can not be less than 7 years and greater than 100 years old.";
            }
            else if (dob < DateTime.Now.Date && (DateTime.Now.Date.Year - dob.Year) > 100)
            {
                error = error + "Client can not be less than 7 years and greater than 100 years old.";
            }

        }
        else
        {
            error = error + "Please enter date of birth.";
        }

        return error.Length > 0 ? false : true;
    }

有一条记录的出生日期为'07 / 19/2045'(MM / DD / YYYY)。每次我测试,我都可以看到验证工作正常。

我可以从浏览器禁用clint端验证。但有没有办法可以禁用服务器端验证?..

我需要知道错误的条目是如何发生的,以防止任何未来的问题。 如果有任何方式用户可以覆盖服务器验证或我在我的方法中做错了,请告诉我。

2 个答案:

答案 0 :(得分:3)

用户无法修改服务器,从StringDateTime的转换中可能存在错误。您可以尝试以下方法:

var date = DateTime.Now;
if(DateTime.TryParse(txtAge.Text, out date))
     if(date <= DateTime.Now.AddYears(-7) && date >= DateTime.Now.AddYears(-100))
         Console.WriteLine("Valid Date");

您需要添加else语句来实现这些错误,您可能需要进行比较,但这应该是一个很好的起点。

答案 1 :(得分:0)

根据我的说法,无法禁用服务器端验证,因为我看不到任何可能阻止进入此代码的配置条目,我认为只有这样才能处理此问题将dll复制到本地系统并尝试各种场景。关于错误的条目,您可以在另一台计算机或示例控制台应用程序中执行相同的输入,以查看验证的哪一部分失败。希望这会有所帮助。