ฉันต้องการอนุญาตให้ส่งแบบฟอร์มได้ก็ต่อเมื่อค่าในฟิลด์หนึ่ง ๆ มากกว่า 0 ฉันคิดว่าแอตทริบิวต์ Mvc Range อาจอนุญาตให้ฉันป้อนเพียง 1 ค่าเพื่อแสดงว่ามีค่ามากกว่าการทดสอบเท่านั้น แต่ ไม่มีโชคเพราะยืนยันค่าต่ำสุดและสูงสุด
ความคิดใด ๆ ที่สามารถทำได้?
ฉันต้องการอนุญาตให้ส่งแบบฟอร์มได้ก็ต่อเมื่อค่าในฟิลด์หนึ่ง ๆ มากกว่า 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; }
ฉันมักจะใช้สิ่งนี้ในการตรวจสอบแบบเลื่อนลง โปรดทราบว่าเนื่องจากเป็นการขยายการตรวจสอบแอตทริบิวต์คุณจึงสามารถปรับแต่งข้อความแสดงข้อผิดพลาดด้วยพารามิเตอร์
Please enter a value less than or equal to 2147483647
มันจะแสดง: