添加验证以防止字符串输入

时间:2015-07-06 17:55:58

标签: c# asp.net

我想阻止用户输入TimeZoneId类型的string。目前,验证没有抓住这个问题。如何防止用户输入字符串值?

我的提供商中的验证码:

目前,我的AddValidator会阻止用户输入空值

  AddValidator(p => p.TimeZoneID != null && projectValidator.IsTimeZoneIdInvalid(p.TimeZoneID.Value), "TimeZoneId", "Invalid time zone ID");

我尝试添加以下内容,但无效。它返回一个错误,指出无法将运算符'!='应用于'System.Nullable'类型的操作数:

    AddValidator(p => p.TimeZoneID != null && p.TimeZoneID != typeof(string) && projectValidator.IsTimeZoneIdInvalid(p.TimeZoneID.Value), "TimeZoneId", "Invalid time zone ID");

1 个答案:

答案 0 :(得分:1)

有点不清楚你想要什么,所以这里有一些选择:

从帖子check content of string input引用@Dan Tao:

好吧,要检查输入实际上是System.String类型的对象,您只需执行:

bool IsString(object value)
{
return value is string;
}

要检查字符串是否只包含字母,您可以执行以下操作:

bool IsAllAlphabetic(string value)
{
foreach (char c in value)
{
    if (!char.IsLetter(c))
        return false;
}

return true;
}

如果您想要将这些结合起来,您可以这样做:

bool IsAlphabeticString(object value)
{
string str = value as string;
return str != null && IsAllAlphabetic(str);
}

使用这些方法可以执行以下操作:

AddValidator(p => p.TimeZoneID != null && !IsString(p.TimeZoneID) && projectValidator.IsTimeZoneIdInvalid(p.TimeZoneID.Value), "TimeZoneId", "Invalid time zone ID");