كيف يمكنني مشاركة قيمة متغيرة بين asp الكلاسيكي و.NET وjavascript؟

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

سؤال

لقد قمت بإنشاء IHttpHandler في .NET C# الذي يقوم بإرجاع أجزاء من html إلى صفحة asp كلاسيكية.

تتواصل صفحة asp الكلاسيكية مع IHttpHandler من خلال طلبات http الأساسية باستخدام ServerXMLHTTP في vbscript أو مكالمات Ajax في JavaScript.

الآن، أحتاج إلى طريقة لمشاركة متغير لدي في vbscript ولكن ليس في javascript مع تطبيق .NET.

الجزء الأول، مشاركة متغير بين asp الكلاسيكي و.net لا يمثل مشكلة حيث يمكنني فقط إضافته إلى طلب http.لأن المتغير غير متوفر في جافا سكريبت ولكن لا يمكنني القيام بذلك في هذه الحالة.

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

حاولت أن أضيف System.Web.SessionState.IRequiresSessionState إلى HttpHandler الخاص بي واستخدم SessionId ولكن هذا لم ينجح لأن كل مكالمة إلى HttpHandler يبدو أنها تحصل على معرف جديد.

هل أفكر بالطريقة الصحيحة؟ما هي خياراتي هنا؟

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

المحلول

ماذا عن وجود متغير مخفي على الصفحة حيث يمكنك تخزين قيمة المتغير من البرنامج النصي vb من جانب الخادم الخاص بك لصفحات asp الخاصة بك.

ثم يمكنك استخدام Javascript للاستعلام عن هذا المتغير لإرساله إلى معالج Asp.Net من خلال مكالمات ajax الخاصة بك.

نصائح أخرى

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

في النهاية كان الحل الذي توصلت إليه للمشكلة هو ما يلي:

  1. أقوم بإرسال المتغيرات إلى خدمة الويب الخاصة بي مع طلب ws العادي
  2. أقوم بتخزين القيم المتغيرة في جدول التجزئة على خدمة الويب وأعيد مفتاح التجزئة إلى العميل في كائن html مخفي (استخدمت رأسًا <meta> عنصر لذلك)
  3. قرأت في جافا سكريبت قيمة التجزئة هذه وأرفقتها بطلب http كقيمة رأس.
  4. عندما ترى خدمة الويب مفتاح التجزئة هذا، فإنها تبحث عن قيم المتغير المعني في جدول التجزئة المستمر.

قد لا يكون الحل الأفضل ولكن يبدو أنه يعمل بشكل جيد في حالتي ...

أود أن أوصي بملف تعريف الارتباط أيضًا.يمكنك أيضًا تحميل القيمة من قاعدة البيانات، لكن هذا سيكون مبالغة.

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