我希望仅在某个字段中的值大于0时才允许提交表单。我认为Mvc Range属性可能只允许输入1值来表示仅大于test,但是它坚持最低和最高值,因此没有运气。
有什么想法可以实现吗?
Answers:
您存储的数字不能大于基础数据类型可以容纳的数字,因此Range属性需要最大值的事实是一件非常好的事情。请记住,∞
这在现实世界中并不存在,因此以下方法应该起作用:
[Range(1, int.MaxValue, ErrorMessage = "Please enter a value bigger than {1}")]
public int Value { 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; }
我通常在下拉验证中使用它。请注意,由于它扩展了validationattribute,因此可以使用参数来自定义错误消息。
Please enter a value less than or equal to 2147483647
。