التحقق من صحة منطقي يجب أن يكون صحيحًا باستخدام XVAL

StackOverflow https://stackoverflow.com/questions/2108659

سؤال

لدي متطلبات عمل لفرض خانة اختيار على نموذج HTML ليتم تمييزه على أنه صحيح قبل السماح لتقديم النموذج.

يمكنني إرجاع المستخدم إلى النموذج إذا لم يتم التحقق من هذا المربع برسالة مناسبة ، ولكن أرغب في إرجاع جميع المعلومات من التحقق من صحة XVAL لبيانات النموذج في نفس الوقت.

لا يمكنني العثور على أي معلومات في مكان آخر ، لذلك من الممكن استخدام XVAL للتحقق من صحة منطق إلى صواب (أو خطأ) ، على غرار استخدام [Range(min, max)] DataAntation أو يجب أن أقوم يدويًا .AddModelError(..) تحتوي على هذه المعلومات لإضافة الخطأ إلى ViewModel؟

هل كانت مفيدة؟

المحلول

هل حاولت إنشاء التحقق من الصحة؟ لقد قمت بإنشاء truetypeattribute لهذا النوع من المواقف.

using System;
using System.ComponentModel.DataAnnotations;

namespace KahunaCentralMVC.Data.ModelValidation.CustomValidationAttributes
{
    public class TrueTypeAttribute : ValidationAttribute
    {
        public override bool IsValid(object value)
        {
            if (value == null) return false;
            bool newVal;
            try
            {
                newVal = Convert.ToBoolean(value);
                if (newVal)
                    return true;
                else
                    return false;
            }
            catch (InvalidCastException)
            {
                return false;
            }
        }
    }
}

[MetadataType(typeof(FooMetadata))]
public partial class Foo
{
    public class FooMetadata
    {
        [Required(ErrorMessage = " [Required] ")]
        [TrueTypeAttribute(ErrorMessage = " [Required] ")]
        public bool TruVal { get; set; }
    }
}

نصائح أخرى

يعامل XVAL بيانات حقل مطلوبة على خانة اختيار ، كما يجب فحصها. اضطررت إلى العمل حول هذا الموقف مؤخرًا حيث كنت أحاول تمثيل منطقية غير قابلة للتفتيت حيث يمكن أن تكون مربع الاختيار صحيحًا أو خطأ (ليس فقط لاغية). ولكن في حالتك هذا يعمل بشكل مثالي. ومع ذلك ، فإنه يعطي رسالة التحقق من صحة الحقل المطلوبة حيث ربما تبحث عن رسالة نوع "يجب قبول هذه المصطلحات".

قد يكون من الأسهل استخدام التحقق من صحة القاعدة عن بُعد XVAL ، والتحقق من صحة من مورد Ajax.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top