سؤال

عندما تعرض وحدة التحكم طريقة عرض بناءً على نموذج، يمكنك الحصول على الخصائص من مجموعة ViewData باستخدام المفهرس (على سبيل المثال.عرض البيانات ["الخاصية"]).ومع ذلك، لدي عنصر تحكم مستخدم مشترك حاولت الاتصال به باستخدام ما يلي:

return View("Message", new { DisplayMessage = "This is a test" });

وفي التحكم في الرسائل كان لدي هذا:

<%= ViewData["DisplayMessage"] %>

أعتقد أن هذا من شأنه أن يعرض DisplayMessage بشكل صحيح، ومع ذلك، يتم إرجاع قيمة فارغة.بعد جرعة كبيرة من الترقيع، قمت أخيرًا بإنشاء فئة "MessageData" من أجل كتابة عنصر تحكم المستخدم الخاص بي بقوة:

public class MessageControl : ViewUserControl<MessageData>

والآن تعمل هذه المكالمة:

return View("Message", new MessageData() { DisplayMessage = "This is a test" });

ويمكن عرضها هكذا:

<%= ViewData.Model.DisplayMessage %>

لماذا لا تتم إضافة خاصية DisplayMessage إلى ViewData (أي.مجموعة ViewData["DisplayMessage"]) دون كتابة قوية لعنصر تحكم المستخدم؟هل هذا حسب التصميم؟أليس من المنطقي أن تحتوي بيانات ViewData على مفتاح لـ "DisplayMessage"؟

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

المحلول

طريقة

ViewData.Eval("DisplayMessage") 

يجب أن تعمل من أجلك.

نصائح أخرى

بالطبع بعد أن قمت بإنشاء هذا السؤال، أجد الإجابة على الفور بعد إجراء عدد قليل من عمليات البحث على Google

http://forums.asp.net/t/1197059.aspx

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

أنا حقا بحاجة إلى التوقف عن الإجابة على أسئلتي :(

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