我正在检查提交表单时Guid是否为空。
public class NotAttribute : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (value != null)
{
if ((Guid) value == Guid.Empty)
{
return new ValidationResult("You must add an image before saving!!!!");
}
}
return null;
}
}
HTML:
@Html.HiddenFor(m => Model.ImageContentGuid)
@Html.ValidationMessageFor(m => Model.ImageContentGuid, "You must upload an image before saving.")
当用户上传图片时,会从Controller生成隐藏的Guid。如果没有上传图片,Guid 不会生成。
逻辑有效但错误消息不会弹出。此外,代码继续执行,我的程序崩溃与NullReference,因为它被认为是hault。
任何人都可以帮我吗?
答案 0 :(得分:0)
Guid.Empty与null不同。 Guid.Empty充满了0。 Guid是一种值类型,这意味着它不能为null。但是,您正在接收一个对象,该对象可以为null,将GUID转换为对象会创建所谓的盒装值,使其成为引用类型。
所以你需要先验证它是否为空,然后比较为空。