c# - 在 C#/.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);

关于c# - 在 C#/.NET 环境中对输入进行全局验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15911531/

相关文章:

c# - 使用 Linq 对元组列表进行分组、排序

c# - 泛型内存管理

c# - 多层平台不会检索数据库连接字符串

为只读命名管道(NamedPipeClientStream 类)启用 MessageMode 时出现 C# UnauthorizedAccessException

c# - Azure 指标从 MetricsClient 返回 0

c# - 如何在 asp.net 中拆分值?

c# - 如何更改 ILNumerics 绘图标记类型?

c# - 从 .EML 文件中检索电子邮件信息

.net - Windbg 和 SciTech 分析器 : Failed to load data access DLL for x64 memory dump

c# - 由于字符串是不可变的,具有相同字符串值的变量是否指向同一个字符串对象?