كيف يمكنني استخدام التحقق من الصحة المخصصة لضمان تطابق اثنين من الخصائص؟

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

سؤال

نحن نستخدم XVAL والمعيار DataAnnotationsValidationRunner موصوفة هنا لجمع أخطاء التحقق من الصحة من كائنات المجال لدينا وعرض النماذج في ASP.NET MVC. أرغب في الحصول على طريقة لتحديد عداء التحقق من الصحة عندما لا تتطابق خصائصان من خلال استخدام البيانات المخصصة.

الآن أنا مجبر على القيام بذلك خارج العداء ، بهذه الطريقة:

if (!(model.FieldOne == model.FieldTwo))
    errors.Add(new ErrorInfo("FieldTwo", "FieldOne must match FieldTwo", model.FieldTwo));

سؤالي هو: هل يمكن القيام بذلك باستخدام سمات التحقق من صحة مستوى الخاصية ، أو هل أجبر على استخدام سمات مستوى الفصل (في هذه الحالة ، يجب أن أقوم بتعديل العداء ... وسؤال المتابعة الخاص بي هو أفضل أفضل لاستردادهم في هذه الحالة).

شكرًا!

تحديث: لقد اكتشفت أخيرًا كيفية كتابة استعلام الكائن لتنفيذ الاقتراح في الإجابة المحددة ؛ أقوم بتسلسل نتائج هذا الاستعلام مع نتائج عداء التحقق من الصحة القياسية ، إذا كان أي شخص فضولي. لاحظ أنني غيرت typeid ليكون خاصية حقل التأكيد.

var classErrorQuery =
      from attribute in
          instance.GetType().GetCustomAttributes(typeof (ValidationAttribute), false).Cast
          <ValidationAttribute>()
      where !attribute.IsValid(instance)
      select new ErrorInfo(attribute.TypeId.ToString(), attribute.FormatErrorMessage(string.Empty), instance);
هل كانت مفيدة؟

المحلول

يرى كتابة سمة مقارنات dataannotation

وأيضًا يمكنك التحقق من AccountModel في المشروع الافتراضي لـ MVC2 ، هناك سمة خصائص MustMatchAttribut

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