سؤال

أنا أستخدم MVC 2.0 في تطبيق ASP.NET باستخدام nhibernate.

لديّ طريقة عرض عمل ووحدة التحكم والوصول إلى البيانات باستخدام nhibernate قادرة على عرض كيان وحفظه مع وجود علاقة مع كيان آخر مرسوم:

شخص -> الموقع

إنه يستخدم HTML HERPER HTML.DropDownListfor () لعرض قائمة بجميع المواقع. يمكن للمستخدم تحديد أحد المواقع من القائمة ، والضغط على حفظ.

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

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

شخص

سؤالي هو ، كيف تحصل على موثق النموذج الافتراضي لاتخاذ مختارات من أ تحديد متعدد المنسدلة وملء ilist.

لقد تمكنت من حفظ مجموعات من الكيانات في الماضي باستخدام بناء الجملة [الفهرس]. http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx.

المشكلة هنا هي أن لدي قائمة منسدلة فقط ، وسوف تعود إلى نموذج Modelbinder مفتاح تكرار مع قيم مختلفة:

person.location.id: 2
person.location.id: 4
person.location.id: 5

هذا ، للأسف ، لا يعمل. تستمر قائمة الموقع في العودة الخالية.

يستخدم رجل واجهة المستخدم لدينا pluggin slick لعرض العناصر في قائمة SELECT ، لذلك أفضل ألا أضطر إلى استخدام واجهة مستخدم مختلفة.

أيه أفكار؟

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

المحلول

اقتراح واحد:

قم بتغيير اسم عنصر القائمة الخاص بك إلى "المواقع" ، ثم في طريقة الإجراء الخاصة بك ، قم بتضمين معلمة string[] locations

إذا تمكنت MVC من مطابقة الأسماء بشكل صحيح ، فيجب أن تتلقى مجموعة من العناصر المحددة. يمكنك بعد ذلك التعامل يدويًا مع تحديث قاعدة البيانات باستخدام إدراج وحذف مناسبة.

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