كيف ASP.NET هل التعامل مع الدورة متعددة علامات التبويب ؟

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

  •  22-07-2019
  •  | 
  •  

سؤال

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

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

هل هناك أي نوع من الحل لهذا ؟

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

المحلول

والسؤال سخيف، لماذا يمكن للمستخدم استخدام الزر مرة أخرى لتحرير البيانات المقبولة فقط في وظيفة؟

وإذا كان تحرير بيانات نشرت سابقا هو السيناريو الشائع لماذا لا مجرد إعادة توجيه إلى صفحة عندما يتم قبول البيانات التي تسمح لهم تحريره. ثم إذا كان ضرب على الزر مرة أخرى أنها سوف تعود إلى إدراج "نظيفة" الأصلي / إضافة صفحة بيانات جديدة.

وهذا من شأنه أن يعطي تدفقات التالية إضافة -> [المشاركة] -> تحرير -> ..... إضافة -> [المشاركة] -> تحرير -> [زر رجوع] -> إضافة -> [المشاركة] -> تحرير -> [المشاركة] -> تحرير ....

نصائح أخرى

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

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

هل حاولت إضافة ID في سلسلة استعلام مواقع المعلومات؟ ثم هل يمكن قراءتها، وإضافته إلى الدورة حسب الحاجة (ويقول على المستخدم النقر على الزر الخلفي).

ويبدو أن الكثير من المشاكل السماح تحرير كائن في صفحة المقدمة عند استخدام الزر مرة أخرى. سيكون من الكثير من لمنحهم زر تحرير بدلا من ذلك؟

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

وأنا لم تجد حتى الآن وسيلة لتجاوز هذه المسألة في حين لا تزال تستخدم SessionState. وكان لدينا حل لاستخدام حالة العرض العادي.

لقد حاولت تخزين معرف في querystring (وهو في الغالب على ما يرام بالنسبة التحرير), ولكن المشكلة أنه عندما يتم تخزين المعلومات في الدورة عند استخدام الزر مرة أخرى.إذا كان المستخدم يقوم التالية:

  1. المستخدم بإنشاء سجل (1 سجل), ID يتم تمريرها على طول في سلسلة استعلام مواقع المعلومات و تخزينها مؤقتا في الدورة.
  2. المستخدم بإنشاء سجل آخر (2 سجل), ID يتم تمريرها على طول في querystring, تخزينها مؤقتا في الدورة.
  3. المستخدم يستخدم الزر مرة أخرى على السجل الأول للذهاب إلى الصفحة التي لا يجب querystring.

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

وسؤالي لك هو لماذا أنت تخزين أي شيء في الدورة لتبدأ؟ إذا كان يمكنك تجنب تخزين أي شيء في هذه الدورة، أعتقد أنك سوف تكون أفضل حالا تماما.

وبعد أن فكرت في هذا ، فهل التالية تبدو لائقة حل المشكلة أشرت أعلاه ؟

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

هل هذا يبدو معقولا جدا أو معقدة للغاية?

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