كيف يمكنني استخدام التحقق من الصحة المخصصة لضمان تطابق اثنين من الخصائص؟
-
25-09-2019 - |
سؤال
نحن نستخدم 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