隐藏的int属性验证

时间:2011-09-24 11:56:41

标签: 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)

此输出<input type="hidden" bbla bla value="0"/>

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

我的解决方案是

只需对该属性使用Range(1,int.MaxValue)属性即可。

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

2 个答案:

答案 0 :(得分:1)

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

完全有效,因为您说此属性的范围为1..MaxInt

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

答案 1 :(得分:1)

有两种选择:

  • 使用Nullable属性(在这种情况下为int?
  • 使用string允许空字段

对于这种情况,首选方法是使ViewModel中的属性可以为空,并将其标记为必需。

问题Should my viewmodel value type properties be nullable?还包含有关这两种方法的一些信息和意见。