سؤال

ولدي التحقق الكامل على obeject واني اسعى الى معرفة أفضل طريقة للتعامل مع ذلك.

وبالنظر إلى الطبقة التالية:

public class LetterResponse {
 public Guid Id {get;set;}
 public bool SendBlankCart {get;set;}
 public string ToName {get;set;}
 public string ToAddress {get;set;}
}

وأريد أن استخدام dataannotation وxval من أجل التحقق من صحة الطبقة قبل أن تستمر، ولكن لدي التحقق من صحة المعقدة التي تتطلب أكثر من عقار واحد.

والزائفة:

if SendBlankCart {
 - no validation on ToName, ToAddress 
} else {
 ToName - required.
 ToAddress - required. 
}

وأود أن علق مثل هذا:

[LetterResponseValidator]
public class LetterResponse {
 public Guid Id {get;set;}
 public bool SendBlankCart {get;set;}
 public string ToName {get;set;}
 public string ToAddress {get;set;}
}

وولها قاعدة التحقق من صحة مثل هذا:

public class LetterResponseValidator : ValidationAttribute
    {
        public override bool IsValid(object value)
        {
            if (value.GetType() == typeof(LetterResponse))
            {
                var letterResponse = (letterResponse) value;
                if (letterResponse.SendBlankCard)
                {
                    return true;
                } else
                {
                    if (string.IsNullOrEmpty(letterResponse.FromDisplayName) || string.IsNullOrEmpty(letterResponse.ToAddress1))
                    {
                        return false;
                    }
                    return true;
                }

            }
            return false;
        }
    }

وأنا تتوقع المعلمة أن تكون المثال بلدي الطبقة LetterResponse، لكنه لم يحصل دعا لي عداء التحقق من صحة؟

هل أحد يعرف طريقة للتعامل مع هذا؟

شكرا،

وهال

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

المحلول

وأنا لا أعتقد أن هذا له علاقة مع حقيقة أن لديك المصادقة على مستوى الصف. لاستبعاد أي اتصال، حاول تطبيق دمية مطلوب مدقق ل"ToName" ومعرفة ما إذا كان ما يسمى المصادقة أم لا.

وإذا كان يتم استدعاؤه، ثم اسمحوا لي أن أعرف، إذا لم يكن، ثم يجب عليك معرفة ما اذا كان لديك تنقضها modelbinder المعيار الخاص بك مع DataAnnotationsModelBinder في ملف Global.asax.cs الخاص بك:

ModelBinders.Binders.DefaultBinder = new DataAnnotationsModelBinder();

لمزيد من التفاصيل حول هذا الموضوع وعرض مشروع يعمل بشكل كامل، وقراءة هذا <وأ href = "https://devermind.wordpress.com/2009/06/21/asp-net-mvc-tip-3-how-to ، غطاء للجميع الخاص بك بين العميل جنبا شكل التحقق من صحة احتياجات دون كتابة أي---جافا سكريبت PART1 / "يختلط =" noreferrer نوفولو "> المادة بلوق عن جانب العميل التحقق من صحة .

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