我正在尝试验证隐藏的整数属性,请您建议更好的方法
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)
属性即可。
我只是想知道这是否是解决这个问题的最佳方案。如果没有,请指出更好的解决方案。
答案 0 :(得分:1)
我遇到了同样的问题,并没有找到更好的解决方案。
完全有效,因为您说此属性的值范围为1..MaxInt
。
我能看到的唯一其他解决方案是使其成为可以为空的整数,然后测试该值是否为空。但是,这将包括零值和负值,因此您仍然必须检查它是否为正整数。
答案 1 :(得分:1)
有两种选择:
Nullable
属性(在这种情况下为int?
)string
允许空字段对于这种情况,首选方法是使ViewModel中的属性可以为空,并将其标记为必需。
问题Should my viewmodel value type properties be nullable?还包含有关这两种方法的一些信息和意见。