在C#/.NET环境中对输入进行全局验证

  • 本文关键字:全局 验证 NET 环境 c# .net
  • 更新时间 :
  • 英文 :


我对C#还很陌生,我知道这在VBA(我的"首选"语言(中很容易。我有一堆数据输入对象(文本/数字/日期(,我希望能够验证该字段的输入是否符合逻辑。我不希望在文本应该在的地方输入日期,我不希望日期应该在的位置输入整数,等等…

我找到了这个代码,用于检查输入的日期是否为有效日期。然而,我不知道这个函数在C#/.NET应用程序中应该放在哪里,也不知道如何从我的一个页面调用这个函数。感谢您的帮助。目前,我在Site.Master.cs中有它,这听起来是一个合适的地方。我应该声明,我希望能够将此验证放在一个地方,而不是放在每个表单上,因为我有10个表单上都有数据输入控件。

static bool IsValidSqlDateTimeNative(string someval)
{
    bool valid = false;
    DateTime testDate = DateTime.MinValue;
    System.Data.SqlTypes.SqlDateTime sdt;
    if (DateTime.TryParse(someval, out testDate))
    {
        try
        {
            // take advantage of the native conversion
            sdt = new System.Data.SqlTypes.SqlDateTime(testDate);
            valid = true;
        }
        catch (System.Data.SqlTypes.SqlTypeException ex)
        {
            // no need to do anything, this is the expected out of range error
        }
    }
    return valid;
}

为什么不添加一个新类并将其作为一个静态方法,这样就可以在应用程序中的任何位置调用它?

例如:

 public static class DateTimeHelpers
 {          
      static bool IsValidSqlDateTimeNative(string someval)
      {
           bool valid = false;
           DateTime testDate = DateTime.MinValue;
           System.Data.SqlTypes.SqlDateTime sdt;
           if (DateTime.TryParse(someval, out testDate))
           {
               try
               {
                   // take advantage of the native conversion
                   sdt = new System.Data.SqlTypes.SqlDateTime(testDate);
                   valid = true;
               }
               catch (System.Data.SqlTypes.SqlTypeException ex)
               {
                   // no need to do anything, this is the expected out of range error
               }
           }
           return valid;
       }
 }    

然后从应用程序中的任何位置调用,如下所示:

 bool result = DateTimeHelpers.IsValidSqlDateTimeNative(mystring);
public static class Validation
{
    public static bool IsValidSqlDateTimeNative(string someval)
    {
        DateTime testDate;
        return DateTime.TryParse(someval, out testDate) && 
               testDate >= SqlDateTime.MinValue.Value;
    }
}

用法:

var isValidSqlDate = Validation.IsValidSqlDateTimeNative("1200-01-01");

另外值得一提的是,您可以在数据库中使用数据类型DateTime2,它具有更大的日期范围(与.net DateTime类型相同(和更大的小数精度。

在.NET中创建网页与大多数脚本语言的一大区别是,所有内容通常都编译成一个大(胖(二进制文件。这通常相当于拥有一个包含所有内容的include.<lang>,然后将其包含到页面中。这在实践中意味着,您在C#/.NET中通常创建的类是.cs文件(即不在pages/master文件中(,您只需从pages/masters文件中调用在所述文件中定义的函数/类。

此外,对于C#的面向对象结构,你不能只在全局名称空间(或任何名称空间(中创建函数,你必须创建一个类,然后让你的函数位于该类中。

最新更新