2011-09-24 127 views
2

我試圖驗證隱藏的整數屬性,你可以請提出更好的辦法隱藏INT屬性驗證

public class Model 
{ 
     [Display(Name="Theme"),Required(ErrorMessage="Please choose your theme")] 
     public int ThemeId { get; set; } 
} 

鑑於

@Html.Hidden(m=>m.ThemeId) 

而這種輸出<input type="hidden" bbla bla value="0"/>

問題是目前該領域是有效的,因爲0是int屬性的默認值,所以屬性中的每個必需項都是默認有效的。所以我必須使它無效。

我的解決辦法是

只需用該屬性Range(1,int.MaxValue)屬性。

我只是要求知道這是否是這個問題的最佳解決方案。如果不是,你可以請點更好的解決方案。

回答

1

我遇到了同樣的問題,並沒有提出更好的解決方案。

這是完全有效的,因爲你說的這個屬性的範圍是1..MaxInt

我能看到的唯一的其他解決方案是將其設置爲一個可爲空的整數,然後測試該值是否爲空。但是,這將包括零值和負值,因此您仍然需要檢查它是否爲正整數。

1

有兩個備選方案:

  • 使用Nullable屬性(int?在這種情況下)
  • 使用string,使空字段

在這個場景中,首選的方法是使ViewModel中的屬性爲空,並將其標記爲需要。

問題Should my viewmodel value type properties be nullable?也包含這兩種方法的一些信息和意見。