2

我在提交表单时检查 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.")

当用户上传图像时,从控制器生成隐藏的 Guid。如果没有上传图像,则不会生成Guid 。

逻辑有效,但不会弹出错误消息。此外,代码继续执行,并且我的程序因 NullReference 而崩溃,因为它应该被拖拽。

谁能帮我这个?

4

1 回答 1

0

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

所以你需要先验证它不为空,然后与空进行比较。

于 2012-11-12T17:06:34.180 回答