• 0

لماذا تُرجع ModelState.IsValid قيمة false دائمًا في ASP.Net MVC؟

عندي صفحة تحوي على نموذج Form وتابع HttpPost أقوم فيه بأخذ مدخلات المستخدم وإرسالها إلى الـ Model المشكلة أنه عندما أقوم بعمل Submit للنموذج يذهب إلى التابع HttpPost ولكن تكون قيمة ModelState.IsValid هي false دائمًا ما هو السبب وكيف يمكنني حل هذا المشكلة؟؟

[HttpPost]
        public ActionResult AddProduct(Product product)
        {
        
            if (ModelState.IsValid)
            {
                Product myProduct = new Product();
                bool isSuccessed = myProduct.insertProduct(product);
                if (isSuccessed == true)
                {
                    ViewBag.AddProductMessage = "Product has been Saved Successfully";
                    return View("index");
                }
                else
                {
                    ViewBag.AddProductMessage = "A problem occurred while Addition";
                    return View("index");
                }

            }
            return RedirectToAction("AddProduct");
        }

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 2

السبب أن النموذج قد يحوي على قيم إدخال خاطئة مثلًا قد تكون القيمة المدخلة في TextBox قيمة نصيّة String والحقل يتطلّب قيمة عدد صحيح integer وذلك لأنه في الـ MVC يتم التحقق من القيم المدخلة في الحقول ومقارنتها بالقيم المسندة إليها مثال إذا أدخلت في الحقل التالي قيمة String وهو حقل يجب أن يُكتب فيه قيمة السعر وهو عدد حقيقي فلن تكون قيمة ModelState.IsValid تساوي True:

  @Html.TextBoxFor(model => model.Product.ProductPrice)

لمعرفة ما هي القيم الغير صحيحة التي تم إدخالها في النموذج استخدم الشيفرة التالية قبل جملة

 if (ModelState.IsValid) وقم بتحديد break point وعمل Debug كما في المثال التالي:

 var errors = ModelState.Values.SelectMany(v => v.Errors);

ستظهر لك الأخطاء في الـ ErrorMessage

56c345676693e_ModelState.thumb.png.2f84d

 

بالتوفيق

تمّ تعديل بواسطة Lujain
1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن