ASP.NET MVC 3 - Guid验证

时间:2012-11-12 17:01:22

标签: asp.net-mvc

我正在检查提交表单时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。

任何人都可以帮我吗?

1 个答案:

答案 0 :(得分:0)

Guid.Empty与null不同。 Guid.Empty充满了0。 Guid是一种值类型,这意味着它不能为null。但是,您正在接收一个对象,该对象可以为null,将GUID转换为对象会创建所谓的盒装值,使其成为引用类型。

所以你需要先验证它是否为空,然后比较为空。