اذهب إلى المحتوى

السؤال

نشر

عندي صفحة تحوي على نموذج 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");
        }

 

Recommended Posts

  • 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

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...