2012-11-12 80 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