如果某个字段中的值大于0,我希望能够只允许表单提交。我想可能Mvc Range属性允许我只输入1个值来表示只有大于测试,但是没有运气,因为它坚持最小和最大值。
任何想法如何实现这一目标?
您不能存储大于基础数据类型可以容纳的数字,因此Range属性需要最大值这一事实是一件非常好的事情。请记住,∞
在现实世界中不存在,因此以下内容应该有效:
[Range(1, int.MaxValue, ErrorMessage = "Please enter a value bigger than {1}")]
public int Value { get; set; }
我发现这个答案试图验证float / double的任何正值。事实证明这些类型对'Epsilon'有一个有用的常量
表示大于零的最小正System.Double值。
[Required]
[Range(double.Epsilon, double.MaxValue)]
public double Length { get; set; }
您可以像这样创建自己的验证器:
public class RequiredGreaterThanZero : ValidationAttribute
{
/// <summary>
/// Designed for dropdowns to ensure that a selection is valid and not the dummy "SELECT" entry
/// </summary>
/// <param name="value">The integer value of the selection</param>
/// <returns>True if value is greater than zero</returns>
public override bool IsValid(object value)
{
// return true if value is a non-null number > 0, otherwise return false
int i;
return value != null && int.TryParse(value.ToString(), out i) && i > 0;
}
}
然后在模型中包含该文件,并将其用作如下属性:
[RequiredGreaterThanZero]
[DisplayName("Driver")]
public int DriverID { get; set; }
我通常在下拉列表验证中使用它。