我想阻止用户输入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");
答案 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");