我有一个可选的字段,但如果它在那里它必须正好六个字符。
StringLength Dataannotation似乎不允许这样做。有没有办法结合东西来得到我想要的东西?理论上我可以使用正则表达式,但如果可能的话,我想避免使用它。
答案 0 :(得分:0)
使用:
[StringLength(6, MinimumLength = 6)]
public string MyString { get; set; }
通过此操作,您可以指定最多6个字符和最少6个字符。如果您输入的数字低于6,那么在尝试发布数据时,您会收到类似这样的消息:
The field MyString must be a string with a minimum length of 6 and a maximum length of 6.
OR 正则表达式:
[RegularExpression(@"^.{6,6}$")]
public string MyString { get; set; }
通过实施IValidatableObject界面可以解决这个问题,但是您将失去客户端/不显眼的验证。验证将在服务器端完成:
public class MyClass : IValidatableObject
{
public string MyString { get; set; }
// ... Other fields ...
public virtual IEnumerable<ValidationResult> Validate(
ValidationContext validationContext)
{
if (!String.IsNullOrEmpty(MyString))
{
if(MyString.Length != 6)
{
// ... Validation rules ...
yield return new ValidationResult("MyString must be 6 chars long",
new[] { "MyString" });
}
}
}
}