التحقق من صحة بيانات النموذج المنشورة في إطار عمل ASP.NET MVC

StackOverflow https://stackoverflow.com/questions/10300

  •  08-06-2019
  •  | 
  •  

سؤال

لقد كنت ألعب باستخدام ASP.NET MVC Framework والشيء الوحيد الذي يحيرني حقًا هو كيف من المفترض أن أقوم بالتحقق من جانب الخادم لبيانات النموذج المنشورة.أفترض أنني لا أقوم بالنشر مرة أخرى على نفس عنوان URL، ولكن إذا لم أفعل ذلك، فكيف يمكنني إعادة عرض النموذج مع البيانات المدخلة ورسائل الخطأ؟أيضًا، إلى أين يجب أن يذهب منطق التحقق؟في النموذج أو وحدة التحكم؟يبدو أن هذا أحد المجالات القليلة التي تكون فيها نماذج الويب أقوى بكثير (أفتقد عناصر التحكم في التحقق من الصحة).

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

المحلول

قد ترغب في إلقاء نظرة على أحدث منشور لـ ScottGu لـ ASP.Net السابق 5.إنه يمر عبر نموذج التحقق المثير للاهتمام للغاية:

http://weblogs.asp.net/scottgu/archive/2008/09/02/asp-net-mvc-preview-5-and-form-posting-scenarios.aspx

نصائح أخرى

فيما يلي نظرة عامة على التدفق في MVC:

  1. / جديد - عرض طريقة العرض "الجديدة" التي تحتوي على نموذج ليملأه المستخدم
    • يقوم المستخدم بملء النموذج ونشره على / create
    • يتم توجيه المنشور إلى إجراء الإنشاء على وحدة التحكم الخاصة بك
    • في أسلوب الإجراء الخاص بك، قم بتحديث النموذج بالبيانات التي تم نشرها.
    • يجب أن يتحقق النموذج الخاص بك من صحة نفسه.
    • يجب أن تقرأ وحدة التحكم الخاصة بك ما إذا كان النموذج صالحًا.
    • إذا كان النموذج صالحًا، فاحفظه في قاعدة بياناتك.قم بإعادة التوجيه إلى /show لعرض طريقة العرض show للكائن الخاص بك.
    • إذا كان النموذج غير صالح، فاحفظ قيم النموذج ورسائل الخطأ في TempData، وأعد التوجيه إلى الإجراء الجديد مرة أخرى.املأ حقول النموذج الخاصة بك بالبيانات من TempData وأظهر رسالة (رسائل) الخطأ.

ستساعدك أطر التحقق من الصحة في هذه العملية.وأعتقد أيضًا أن فريق ASP.NET MVC يخطط لإطار عمل للتحقق من الصحة للمعاينة التالية.

بقدر ما أستطيع أن أقول أن الجميع ما زالوا يحاولون اكتشاف الطريقة "القياسية" للقيام بذلك.ومع ذلك، قم بالتأكيد بمراجعة أحدث منشورات Phil Haack وScott Guthrie على MVC وستجد بعض المعلومات المثيرة للاهتمام حول كيفية قيامهم بذلك.عندما كنت ألعب به بنفسي، قمت بإنشاء ModelBinder لفئة البيانات LinqToSql التي قمت بإنشائها.يمكنك الاطلاع على هذا المنشور لمعرفة كيفية تجميع ModelBinder الأساسي:

ASP.Net MVC نموذج الموثق

في الإجراء الخاص بك، إذا قمت بإنشاء "منتج" ModelBinder، فستعلن الإجراء كما يلي:

نتيجة العمل العامة الجديدة (منتج المنتج)

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

بعد ذلك، ضمن طريقة GetValue() الخاصة بك، يمكنك تنفيذ أي عملية تحقق تريدها، سواء باستخدام الاستثناءات أو التعبير العادي أو أي شيء يمكنك إجراء مكالمة مثل:

(ModelStateDictionary_name).AddModelError("form_element_id"، "entered_value"، "error_message");

ثم يمكنك فقط طرح <%= Html.ValidationSummary() %> في طريقة العرض الخاصة بك لعرض جميع أخطائك.

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

هل ألقيت نظرة على هذا؟http://www.codeplex.com/MvcValidatorToolkit

نقلا عن الصفحة

توفر مجموعة أدوات المدقق مجموعة من المدققين لإطار عمل ASP.NET MVC الجديد للتحقق من صحة نماذج HTML على جانب العميل والخادم باستخدام مجموعات التحقق من الصحة.

أخشى أن يضطر شخص أكثر خبرة في MVC مني إلى التحدث إلى المكان الذي يجب أن تضع فيه الأشياء في الهندسة المعمارية.

أنا أتعلم إطار عمل MVC أيضًا، لذا لست متأكدًا من مدى صعوبة ذلك، ولكن مما أفهمه سيكون لديك نموذج في طريقة عرض مثل Edit.aspx.سيتم بعد ذلك نشر هذا النموذج إلى وحدة التحكم إلى أسلوب إجراء آخر مثل Update() وتمرير محتويات النموذج الذي قمت بتعيينه في Edit.aspx كمعلمات.

Update(int id, string name, string foo)

يمكنك القيام بالتحقق من الصحة ضمن هذه الطريقة.إذا كان كل شيء على ما يرام،

return View("Item", yourObject)

هنالك Castle.Components.Validator وحدة في مشروع القلعة.إنها رشيقة وقوية للغاية.فهو ينشئ قواعد التحقق من الصحة بناءً على سمات النموذج (أو أي مصدر آخر) ويستطيع أيضًا إنشاء التحقق من صحة JS باستخدام jQuery وPrototype Validation وfValidate وغيرها.بالطبع من الحكمة تجريد أداة التحقق من واجهة IValidationEngine.

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