c# data annotation - كيفية تحديد حد أدنى ولكن بدون عشري كحد أقصى باستخدام سمة توضيحية لبيانات النطاق؟





4 Answers

إذا كنت قلقًا بشأن السلسلة التي تبدو لطيفة ، فيمكنك إجراء ذلك:

    [Range(0, Double.PositiveInfinity)]

سيحتوي هذا على رسالة خطأ افتراضية من:

يجب أن يكون الحقل SuchAndSuch بين 0 و Infinity.

in mvc model

أرغب في تحديد أن الحقل العشري للسعر يجب أن يكون> ​​= 0 ، لكنني لا أرغب حقًا في فرض قيمة قصوى.

هنا ما لدي حتى الآن ... لست متأكدا ما هي الطريقة الصحيحة للقيام بذلك.

[Range(typeof(decimal), "0", "??"] public decimal Price { get; set; }



يمكنك استخدام:

[Min(0)]

سيؤدي ذلك إلى فرض قيمة دنيا لا تقل عن 0 (صفر) ، ولا قيمة قصوى.

أنت بحاجة إلى DataAnnotationsExtensions لاستخدام هذا.




يمكنك استخدام التحقق المخصص:

    [CustomValidation(typeof(ValidationMethods), "ValidateGreaterOrEqualToZero")]
    public int IntValue { get; set; }

    [CustomValidation(typeof(ValidationMethods), "ValidateGreaterOrEqualToZero")]
    public decimal DecValue { get; set; }

نوع طرق التحقق:

public class ValidationMethods
{
    public static ValidationResult ValidateGreaterOrEqualToZero(decimal value, ValidationContext context)
    {
        bool isValid = true;

        if (value < decimal.Zero)
        {
            isValid = false;
        }

        if (isValid)
        {
            return ValidationResult.Success;
        }
        else
        {
            return new ValidationResult(
                string.Format("The field {0} must be greater than or equal to 0.", context.MemberName),
                new List<string>() { context.MemberName });
        }
    }
}



باستخدام المدى مع

[Range(typeof(Decimal), "0", "9999", ErrorMessage = "{0} must be a decimal/number between {1} and {2}.")]

[Range(typeof(Decimal),"0.0", "1000000000000000000"]

آمل أن يساعد






Related