سؤال

لدي مشروع Hybrid ASP.NET WebForms/MVC. في صفحتي الرئيسية ، لدي عنصر تحكم مستخدم "قائمة" وعنصر مستخدم "تذييل". على أي حال. أحتاج إلى تمرير بعض البيانات (سلاسلان) إلى عنصر تحكم مستخدم "القائمة" الخاص بي على صفحتي الرئيسية (لتحديد علامة التبويب الحالية في التنقل في القائمة ، وما إلى ذلك) وجهات نظراتي مملوءة بقوة بنموذج البيانات الخاص بي. كيف يمكنني دفع البيانات من وحدة التحكم الخاصة بي إلى قائمتي أو على الأقل السماح لصفحتي الرئيسية بالوصول إلى بعض البيانات المحددة مسبقًا في وحدة التحكم الخاصة بي؟

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

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

المحلول

ضع سلاسلك في مجموعة ViewData ،

ViewData["MenuString1"] = "My First String";
ViewData["MenuString2"] = "My Second String";

واستردادها في الصفحة الرئيسية مثل هذا:

myMenu.Property1 = ViewData["MenuString1"].ToString();
myMenu.Property2 = ViewData["MenuString2"].ToString();

http://nerddinnerbook.s3.amazonaws.com/part6.htm

نصائح أخرى

يمكنك استخدام ViewData لمشاركة البيانات بين وحدة التحكم والعرض غير الموجود في النموذج. في وحدة التحكم ، افعل شيئًا مثل ViewData["menu"] = myMenu; ثم في العرض <%= ViewData["menu"] %>. يمكنك تمرير الكائنات ولكن تحتاج إلى إلقاء ViewData [Key] مرة أخرى إلى نوع الكائن في العرض.

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

أميل نحو استخدام ViewData للقيم المؤقتة من وحدة التحكم مثل قوائم Select و RendingAction للأشياء غير ذات الصلة مثل التنقل في الموقع الرئيسي.

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