ما هي أفضل طريقة لتنفيذ التحقق من صحة الحقل باستخدام ASP.NET MVC؟

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

  •  08-06-2019
  •  | 
  •  

سؤال

أقوم بإنشاء موقع ويب عام باستخدام ASP.NET، وكجزء من التسليم أحتاج إلى إنشاء موقع إداري لإدخال البيانات للأشياء المعروضة في الموقع العام، وكنت أتساءل ما هي التقنيات أو الإجراءات التي يستخدمها الأشخاص للتحقق من صحة الإدخالات باستخدام ASP صافي MVC.

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

المحلول

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

يمكن أيضًا العثور على نموذج لطريقة تحكم MVC هنا والذي يستخدم بشكل أساسي نوع الإجراء JsonResult مثل:

public JsonResult CheckUserName(string username)
{
    return Json(CheckValidUsername(username));
}

نصائح أخرى

@Chuck - لا يمكنك استخدام عناصر تحكم AjaxToolKit في ASP.NET MVC حتى الآن.إنها تعمل فقط في نموذج إعادة النشر لصفحة ASP.NET.

تحديث:

اعتبارًا من 20 أغسطس 2008، يمكنك استخدام ملفات البرامج النصية فقط من مجموعة أدوات التحكم Ajax داخل ASP.NET MVC Framework.هنا رابط ل يطلق.

أيضًا، هنا هو البرنامج التعليمي حول استخدامها لإنشاء تقويم منبثق بواسطة ستيفن فالتر.

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

IMO باستخدام xVal مع jQuery وDataAnnotationsModelBinder هو أفضل مزيج.

ومع ذلك، في بعض الأحيان، توجد قواعد للتحقق لا يمكن التحقق منها بالكامل من جانب العميل، لذلك تحتاج إلى استخدام التحقق من جانب العميل عن بعد.

لقد اكتشفت طريقة لتنفيذ التحقق من جانب العميل عن بعد بشكل عام باستخدام xVal / jQuery.validate بحيث

  • تظل قواعد التحقق من الصحة موجودة فقط في نموذج ASP.NET MVC الخاص بك
  • تكتب كل قاعدة تحقق مرة واحدة فقط، وبرمز C# قابل للاختبار بسهولة.لا يوجد جافا سكريبت أو أي نظير آخر من جانب العميل.
  • ليست هناك حاجة للتفرع أو تعديل xVal أو jquery.validate
  • كل ما عليك فعله لكل قاعدة جديدة للتحقق من صحة النموذج البعيد هو الاشتقاق من الفئة الأساسية الموضحة في هذه المقالة.

كتبت أ مقالة مدونة على هذا وصف كل التفاصيل.

أحب استخدام LiveValidation مكتبة داخل تطبيقات ASP.NET MVC الخاصة بي.وباستخدامه، تمكنت من إعداد طريقة لإجراء التحقق من الصحة على العميل وعلى الخادم.بهذه الطريقة سيعرف المستخدم أن هناك خطأ ما قبل إرسال النموذج ثم يستخدم وظيفة جانب الخادم للحالات البعيدة الأخرى.

لقد بدأت بهذا المنشور الذي يقوم بعمل جيد جدًا حول كيفية إعداد إعداد مماثل:

التحقق من جانب العميل المستند إلى النموذج لـ ASP.NET MVC

طريقى:

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

لقد كنت أيضًا أتابع أفكار ستيفن والثر على قناة MVC وأعتقد هذا المشنور من الرائع إعادة ملء الحقول بالبيانات المقدمة ليتم تغييرها قبل إرسالها مرة أخرى.

ماذا تستخدمون يا رفاق؟

هل ألقيت نظرة على عناصر التحكم المتوفرة مع AjaxToolKit؟لقد استخدمت MaskedEditExtender وValidatorCalloutExtender وكنت سعيدًا جدًا بالنتائج.

@ ديل - شكرًا لتصحيح هذا الأمر!لم أكن على علم بذلك (بدأت للتو في استخدام مجموعة الأدوات الأسبوع الماضي).يرجى تجاهل اقتراحي :)

@زاك:نعم، لقد قرأت هذا المنشور أيضًا واستنادًا إلى هذا المنشور، يستخدم SO jQuery كمكتبة جافا سكريبت الخاصة به.لا أستطيع التحدث باسم فريق SO، لكن تخميني المدروس هو أنهم على الأرجح يستخدمون ميزات ajax داخل jquery للتعامل مع طلبات ajax الخاصة بهم.في الواقع، ليس هذا هو الترميز اليدوي السيئ إذا كنت تستخدم مكتبة جافا سكريبت مثل مسج, النموذج المبدئي, ، و MooTools.ثم تستخدم قيمة الإرجاع JsonResult ActionResult الجديدة لإجراءاتك وتقدم طلبات ajax ضدها.تقوم هذه المكتبات بتغليف كائنات XmlHttpRequest لك وتسهل إجراء مكالمات Ajax والمتصفح بشكل آمن.

يمكنك استخدام ال إطار التحقق من صحة .net على codeplex إذا كنت تريد التحقق من جانب العميل/الخادم.يقوم بإنشاء رمز للمكون الإضافي للتحقق من صحة jQuery استنادًا إلى القواعد المحددة في النموذج.بالإضافة إلى ذلك، إذا كنت تستخدم الوظيفة "المتقدمة" لإطار العمل، فيمكنك التحكم يدويًا في إعدادات jQuery للتحقق من صحة إعدادات المكون الإضافي.تفحص ال بداية سريعة.mvc.

استخدم مزيجًا من التحقق من جانب العميل والتحقق من جانب الخادم.

للتحقق من صحة جانب العميل، النهج الموضح في إجابة من دانيال بولارد يبدو سليما.التحقق من جانب العميل ليس إلزاميًا ولكنه سيوفر للمستخدم تجربة أجمل وأكثر استجابة.

من ناحية أخرى، يجب أن يكون التحقق من جانب الخادم إلزاميًا:لا تثق أبدًا في المدخلات من العميل.سأبحث بالتأكيد في الإمكانات التي يوفرها إطار عمل ASP.NET MVC في Preview 5 (كما هو موضح في الإجابة بواسطة مات هينز),

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



class User {

    [Required]
    public string Name{get;set;}

    [Email][Required]
    public string Email {get;set;}
}

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

قراءة هذا المنصب أكثر هنا

@تشاك - لا شكر على واجب.هذا هو الغرض من SO.تتعلم شيئًا ويتعلم الشخص الذي يطرح السؤال شيئًا ما.

كيف يتم التعامل مع AJAX على Stack Overflow؟هل تقوم JQuery بذلك؟

  • انقر بزر الماوس الأيمن على الصفحة
  • ابحث عن "عرض مصدر الصفحة" في القائمة المنبثقة
  • انقر فوقه

:-)

إذا كنت تريد الاستمرار في الوظائف الجاهزة ولكنك بحاجة إلى توسيعها، فقم بإلقاء نظرة عليها جوابي هنا لسؤال حول IDataError.

أستخدم بشكل أساسي التعليقات التوضيحية للبيانات وموثق النماذج لمنطق أكثر تعقيدًا.لقد وجدت أنها طريقة نظيفة جدًا وتتيح لي البقاء ضمن حدود ما يقدمه MS.

أشرح كيفية استخدام رابط النموذج لإضافة فحص "على مستوى الفصل" لنموذجك دون الحاجة إلى استخدامه IDataError - والذي كما رأيت هنا يمكن أن يكون أخرقًا تمامًا.لا يزال يسمح لك باستخدام السمات [المطلوبة] أو أي سمات تحقق مخصصة أخرى لديك، ولكنه يسمح لك بإضافة أو إزالة أخطاء النموذج الفردية.لمزيد من المعلومات حول كيفية استخدام التعليقات التوضيحية للبيانات، أوصي بشدة هذه المشاركة من سكوت جو.

إحدى طرق تنفيذ التحقق من الصحة في ASP.NET MVC هي استخدام التعليقات التوضيحية للبيانات مع التحقق من صحة جانب العميل.هذا شرط يوضح كيف يمكننا القيام بذلك لفئات النماذج التي تم إنشاؤها في إطار الكيان.

ديل راجان كتب:

لا يمكنك استخدام عناصر تحكم AjaxToolKit في ASP.NET MVC

كيف يتم التعامل مع AJAX على Stack Overflow؟هل تقوم JQuery بذلك؟في منشوره الخاص بـCoding Horror أسرار جافا سكريبت نينجا كتب جيف عن استخدام JQuery أثناء كتابة Stack Overflow.

بالتأكيد لم يقوموا بتشفيرها يدويًا.لقد فعلت ذلك مرة واحدة باستخدام XMLHttpRequest JavaScript عندما انتشر مصطلح "AJAX" في عام 2005 تقريبًا.لقد كان كابوس.

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