2012-11-12 81 views
2

我正在检查表单提交时Guid是否为空。ASP.NET MVC 3 - 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而崩溃,因为它被假设为饶恕。

任何人都可以帮助我吗?

+0

告诉我们你在哪里生成guid – Dmitry

+0

@Subby .... IsValid()方法返回...在控制器中。 – MikeTWebb

+0

围绕呼叫Isvalid()的代码 – MikeTWebb

回答

0

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

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

+0

问题不在于此..我想。我遇到的问题是逻辑起作用,但程序继续,并且不会* HAULT * HTML。相反,它会继续执行服务器端代码。请检查编辑。 – Subby