سؤال

أرغب في إنشاء كائن في خطوات مختلفة في تطبيق ASP.NET MVC، كل خطوة كونها صفحة مختلفة. نوع الشيء الذي تقوم بتخزينه في الجلسة في تطبيق Quick Web.forms.

القراءة عن ذلك، لا يبدو لي الجلسة كشيء asp.net mvc'ish. ومع ذلك، لا يمكنني التفكير في بدائل أخرى لهذا الموقف، حيث يبدو أن Tempdata و Viewdata لائقا أيضا، لذلك ربما أكون مخطئا.

بالطبع يمكنني وضع خطوات 4 في صفحة واحدة وإظهار / إخفاء، لكن هذه ليست وجهة نظري بالسؤال. أرغب في سماع رأيك في الجلسة في MVC، إذا كان الأمر متراو جيدا لهذا النوع من مشكلة متعددة الخطوات أو تميل إلى القيام بذلك بطرق أخرى.

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

شكرا مقدما

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

المحلول

لا يوجد شيء UN-MVC حول الجلسة، وهو جزء حيوي من الويب ومعظم المواقع تستخدمه بطريقة ما. لديك حقا اثنين من الخيارات الرئيسية. إما تخزين الكائن في قاعدة البيانات بين الصفحات (مما يعني حفظ كائن غير مكتمل) أو ضعه في الجلسة. لكلاهما مميزات ومساوئ.

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

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

في النهاية، دعوة الحكم بين الاتجاهين، لقد استخدمت على مر السنين.

نصائح أخرى

يمكنك تمريرها بين وجهات النظر مع Tempdata ... ولكن عليك أن تحافظ على تمريرها من خلال آراء لاحقة. من المفترض أن يستهلكها طلبا لاحقا، ولكن لا يعني أنه لا يمكنك تمرير بيانات TEMP إلى الطلب التالي الذي يضع أيضا نفس البيانات في بيانات TEMP.

هل حاولت <%= Html.HiddenField(...) %>?

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