【问题标题】:Hidden int property validation隐藏的 int 属性验证
【发布时间】:2011-09-24 11:56:41
【问题描述】:

我正在尝试验证隐藏的整数属性,请您提出更好的方法

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) 属性。

我只是想知道这是否是解决此问题的最佳方法。如果不能,请指出更好的解决方案。

【问题讨论】:

    标签: c# .net asp.net-mvc validation


    【解决方案1】:

    我也遇到过同样的问题,但没有找到更好的解决方案。

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

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

    【讨论】:

      【解决方案2】:

      有两种选择:

      • 使用Nullable 属性(在本例中为int?
      • 使用string 允许空字段

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

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

      【讨论】:

        猜你喜欢
        • 2022-01-27
        • 1970-01-01
        • 1970-01-01
        • 2012-12-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多