سؤال

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

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

<% 
    MVC2test.Models.Person p = ViewData.Model as MVC2test.Models.Person;
%>
// snip
<%= Html.DisplayFor(p => p) %>

لكنني أحصل على الرسالة التالية:

CS0136: لا يمكن الإعلان عن المتغير المحلي المسمى 'p' في هذا النطاق لأنه سيعطي معنى مختلف "P"، والذي يستخدم بالفعل في نطاق "الأصل أو الحالي" للدلالة على شيء آخر

أعلم أن هذا ليس ما يجب أن أفعله - أعرف أن إعادة تعريف المتغير سوف ينتج عن هذا الخطأ، لكنني لا أعرف كيفية الوصول إلى الكائن من وحدة التحكم. لذلك سؤالي هو، كيف يمكنني اجتياز الكائن إلى العرض من أجل عرض خصائصه؟

NB يجب أن أضيف أنني أقرأ ذلك في وقت فراغي المحدود، لذلك من الممكن تماما فقد فاتني شيئا أساسيا.

تيا

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

المحلول

Html.DisplayFor يمكن استخدامها فقط عند كتابة رأيك بقوة، ويعمل على الكائن الذي تم تمريره إلى العرض.

لذلك، يجب أن تعلن وجهة نظرك مع شخص النوع كنوع نموذجي، (على سبيل المثال something.something.View<Person>) (آسف، أنا لا أتذكر الأسماء الدقيقة، ولكن هذا يجب أن يكون منطقي)، ثم عند الاتصال Html.DisplayFor(p => p), p سوف تأخذ قيمة القيمة النموذجية المرة (الشخص) في الرأي.

نأمل أن معنى له.

نصائح أخرى

P هو بالفعل اسم متغير؛ والأسماء المتغيرة يجب أن تكون فريدة من نوعها في جميع أنحاء النطاق الحالي. لذلك عرض (P => P) غير صالح، كما كنت تعلن متغير جديد "P" هناك. وبهذه الطريقة لا يعرف المترجم Wether استخدام شخصك P أو (P =>) متغير.

حتى مجرد إعادة تسمية ذلك

<%= Html.DisplayFor(person => person) %>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top