1

我对 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;
}
4

3 回答 3

3

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

例如:

 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);
于 2013-04-09T20:14:08.067 回答
1
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,它具有更大的日期范围(与 .netDateTime类型相同)和更大的小数精度。

于 2013-04-09T20:28:06.660 回答
0

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

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

于 2013-04-09T20:15:39.120 回答