我对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#的面向对象结构,你不能只在全局名称空间(或任何名称空间(中创建函数,你必须创建一个类,然后让你的函数位于该类中。