سؤال

أنا باستخدام إصدار أقدم من ASP.NET اياكس بسبب وقت التشغيل القيود, وضع ASP.NET مدقق داخل لوحة التحديث لا يعمل.هل هناك خدعة لجعل هذا العمل ، أو هل أنا بحاجة إلى استخدام ValidatorCallOut التحكم التي تأتي مع AJAX toolkit?

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

المحلول

وأظن كنت تقوم بتشغيل الإصدار الأصلي (RTM) من .NET 2.0.

حتى أوائل عام 2007 المصادقة الضوابط لم تكن متوافقة مع UpdatePanels.هذا كان حل مع SP1 من .NET Framework.

مصدر المشكلة هو أن UpdatePanel يمكن الكشف عن العلامات التغييرات في الصفحة الخاصة بك, ولكن ليس لديها أي وسيلة لتتبع البرامج النصية بشكل صحيح.المصادقون تعتمد بشكل كبير على البرامج النصية.أثناء إعادة النشر الجزئي ، النصوص إما في مهب, لا تحديث, أو لا تعمل عندما يتم المقصود.

في أوائل البيتا MS قد UpdatePanel محاولة تخمين ما مخطوطات بحاجة إلى إعادة المقدمة أو تشغيل.لم تعمل بشكل جيد جدا, و كان عليهم أن تأخذ بها.

للالتفاف على المشكلة الآنية ، أطلقت مايكروسوفت نسخة مصححة من المصادقة على فصول في DLL جديد يسمى Validators.DLL و أعطى تعليمات حول كيفية معرفة ASP.NET إلى استخدام تلك الطبقات بدلا من سعرها الحقيقي.إذا كنت جوجل عن هذا الاسم DLL, عليك أن تجد المزيد من المعلومات.انظر أيضا هذا بلوق وظيفة.

كان هذا التوقف هفوة التدبير و يجب أن لا تستخدم تجنب ذلك إذا كان ذلك ممكنا.

الحل الحقيقي للمشكلة جاء بعد وقت قصير،.NET FRAMEWORK 2.0 المزود بحزمة الخدمة SP1.عرضت شركة مايكروسوفت آلية جديدة لتسجيل البرامج النصية في حزمة الخدمة SP1 ، وتغيير حقيقي المصادقة فصول لاستخدام تلك الآلية بدلا من واحد من كبار السن.

اسمحوا لي أن أقدم لكم بعض التفاصيل عن التغييرات:

تقليديا كان من المفترض أن تسجيل البرامج النصية عبر الصفحة أساليب مثل صفحة.RegisterStartupScript () ، الصفحة.RegisterClientScriptBlock().المشكلة هي أن هذه الأساليب لم تكن مصممة القابلية UpdatePanel لا سبيل إلى رصد هذه المكالمات.

في حزمة الخدمة SP1 هناك خاصية جديدة كائن على صفحة تسمى الصفحة.ClientScripts.يحتوي هذا الكائن على طرق تسجيل البرامج النصية التي تعادل (وفي بعض طرق أفضل) إلى تلك الأصلي.أيضا ، UpdatePanel يمكن رصد هذه المكالمات ، بحيث rerenders أو المكالمات الطرق عند الاقتضاء.أقدم RegisterStartupScript () ، الخ.وقد أساليب إهمال.أنها لا تزال تعمل ، ولكن ليس داخل UpdatePanel.

ليس هناك من سبب (غير السياسة ، أفترض) أن لا تحديث المنشآت .NET FRAMEWORK 2.0 المزود بحزمة الخدمة SP1.حزم الخدمة تحمل الإصلاحات الهامة.

حظا سعيدا.

نصائح أخرى

@جوناثان هولندا:ما هو الخطأ مع استخدام Validators.dll?

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

بالطبع, يجب تقييم كل حالة.إذا كنت على الاطلاق عالقة باستخدام .NET 2.0 RTM, ثم Validators.dll هو أفضل من لا شيء.

@jmein

في الواقع المشكلة هي أن المصادقة العميل النصي لا تعمل عند وضعها داخل أحد updatePanel (UpdatePanels تحديث باستخدام .innerHTML, الذي يضيف السيناريو العقد كما نص العقد ، وليس النصي العقد ، وبالتالي فإن المتصفح لا يعمل بها).

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

http://blogs.msdn.com/mattgi/archive/2007/01/23/asp-net-ajax-validators.aspx

إذا كان السبب من أي وقت مضى كنت غير قادر على استخدام udpated نسخة من ASP.NET المصادقة يتحكم هو في الواقع من السهل جدا للتحقق من صحة التحقق من صحة مجموعة نفسك, كل ما عليك القيام به هو الاتصال

Page_ClientValidate("validationGroupName");

ثم يمكنك استخدام PageRequestManager تنفيذ التحقق من صحة ما تحتاج إليه.

بالتأكيد باستخدام تحديث ضوابط تصديق هو الطريق للذهاب ، ولكن أنا جزئية جدا جافا سكريبت ;)

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