C# 隐藏int属性验证

C# 隐藏int属性验证,c#,.net,asp.net-mvc,validation,C#,.net,Asp.net Mvc,Validation,我正在尝试验证隐藏整数属性,您能建议更好的方法吗 public class Model { [Display(Name="Theme"),Required(ErrorMessage="Please choose your theme")] public int ThemeId { get; set; } } 鉴于 @Html.Hidden(m=>m.ThemeId) 这个输出 问题是当前此字段有效,因为0是int属性的默认值,所以属性中的每个必需项都是默

我正在尝试验证隐藏整数属性,您能建议更好的方法吗

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

@Html.Hidden(m=>m.ThemeId)
这个输出

问题是当前此字段有效,因为0是int属性的默认值,所以属性中的每个必需项都是默认有效的。所以我必须使它无效

我的解决办法是

只需为该属性使用
Range(1,int.MaxValue)
属性


我只是想知道这是不是解决这个问题的最好办法。如果没有,请指出更好的解决方案。

我遇到了同样的问题,还没有找到更好的解决方案

正如您所说,此属性的值的范围是
1..MaxInt
,这是完全正确的


我能看到的唯一其他解决方案是将其设置为可为null的整数,然后测试该值是否为null。但是,这将包括零值和负值,因此您仍然必须检查它是否为正整数。

有两种选择:

  • 使用
    Nullable
    属性(本例中为
    int?
  • 使用
    string
    允许空字段
对于此场景,首选方法是使ViewModel中的属性可为null,并根据需要将其标记

该问题还包含关于这两种方法的一些信息和意见