سؤال

أنا أستخدم مكتبة التحقق من صحة MVC من رابط النص. وبعد اخترت هذه المكتبة لأنني أستخدم أيضا. وإنشاء كل سمات التحقق من الصحة باستخدام كتل التحقق من صحة مكتبة MS Enterprise.

إنه يعمل بشكل جيد إلا أن هذا الربط النموذجي يتم التحقق منه تلقائيا الكائن وملء ملخص التحقق من الصحة. أعتقد أن هذا في السلوك الطبيعي.

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Register([Bind()]NetTiersObject obj)
{
    return View();
}

تحتوي مكتبة التحقق من الصحة أيضا طريقة موثقة على النحو التالي:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Register([Bind()]NetTiersObject obj)
{
    try
    {
        obj.Validate<NetTiersObject>();
    }
    catch (EntityValidationException ex)
    {
        ViewData.ModelState.PopulateWithErrors(ex);
    }
    return View();
}

هذا يعمل أيضا بشكل جيد.

مشكلتي هي أنه عند استخدام طريقة مكتبة التحقق من الصحة تكرر رسائل الخطأ. عند استخدام النموذج الربط، تظهر رسائل الخطأ غريبا. الأخطاء لها اسم العقار في الرسالة.

لذلك، أعتقد أنني يجب أن أحتاج إلى تهيئة رسائل الخطأ الربط النموذجية أو تعطيل نموذج ملزم تماما.

أي توصية، مساعدة؟

شكرا.

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

المحلول 2

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

إذا وجدت المزيد من التفاصيل، فسوف أقوم بتحديث هذا المنصب.

نصائح أخرى

هل حاولت:

    /*At the Point the ModelState should be Valid(TRUE)
      because we still didn't enforce any validations */
    var v = ModelState.IsValid;

try
    {
        obj.Validate<NetTiersObject>();
    }
    catch (EntityValidationException ex)
    {
        ViewData.ModelState.PopulateWithErrors(ex);
    }

والتحقق مما إذا كان V صحيح، يجب أن يكون. إذا كان صحيحا بعد ذلك obj.Validate<NetTiersObject>(); يفعل شيئا خاطئا لأنها ملء الأخطاء المكررة فقط.

مشكلتي هي أنه عند استخدام طريقة مكتبة التحقق من الصحة تكرر رسائل الخطأ. عند استخدام النموذج الربط، تظهر رسائل الخطأ غريبا. الأخطاء لها اسم العقار في الرسالة.

من الغريب لأن الموديلات يجب ألا يزيل الأخطاء النموذجية، على الأقل إذا لم تستخدمك نموذجا مخصصا أو محاولة الحفظ في DB دون التحقق من صحة الحقول.

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