البرمجة

حل مشكلة ظهور ‘System.Web.Mvc.SelectListItem’ في DropDownList بلغة C#

في هذا السياق، يظهر لك نص “System.Web.Mvc.SelectListItem” في قائمة الاسقاط الخاصة بك بدلاً من النص المتوقع، وهذا يمكن أن يكون ناتجًا عن عدة عوامل. لنقم بفحص الشيفرة لفهم الوضع بشكل أفضل.

أولاً وقبل كل شيء، يبدو أن مشكلتك قد تنبع من كيفية تعبئة النصوص لـ SelectListItem في النموذج الخاص بك. في نموذجك Licenses، يوجد خاصية LicenseNames من نوع SelectList، ولكنها لا تحتوي على قائمة فعلية من العناصر. بدلاً من ذلك، يتم تعبئتها باستخدام SelectList في العملية الخاصة بك في الوحدة التحكم.

لتصحيح هذا، يمكنك تعبئة LicenseNames بقائمة فعلية من SelectListItem في نموذجك بدلاً من استخدام SelectList. يمكنك فعل ذلك بتعديل نموذجك كما يلي:

csharp
public class Licenses { public List LicenseNames { get; set; } public string SelectedLicenseName { get; set; } }

ومن ثم في الوحدة التحكم، يمكنك تعبئة هذه القائمة في الطريقة التالية:

csharp
model.LicenseNames = LicsTable.AsEnumerable().Select(row => new SelectListItem { Value = row["Description"].ToString(), Text = "test" }).ToList();

بهذه الطريقة، ستحتوي LicenseNames على قائمة فعلية من SelectListItem، وبالتالي يجب عرض النصوص الصحيحة في قائمة الاسقاط الخاصة بك.

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

يرجى تجربة هذه الإصلاحات والتحقق مما إذا كانت تحل المشكلة الخاصة بك.

المزيد من المعلومات

بالطبع، سأوسع في شرح المزيد من المعلومات لفهم الوضع بشكل أفضل.

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

بعد تغيير نوع LicenseNames إلى List، يمكنك أيضًا التحقق من طريقة عرض البيانات في العرض الجزئي "_AddLicense" لضمان أنه يستخدم النموذج الصحيح ويعرض البيانات بشكل صحيح.

على سبيل المثال، يمكن أن يكون لديك شيفرة في العرض تشبه هذه:

csharp
@model ProfessionalActivities.Models.Licenses
@Html.DropDownListFor(model => model.SelectedLicenseName, Model.LicenseNames, "-- اختر الترخيص --", new { @class = "form-control focusMe" })

هذا الكود يستخدم DropDownListFor لعرض البيانات من LicenseNames، ويأخذ في اعتباره القيمة المحددة SelectedLicenseName. يمكنك أيضًا استخدام DropDownList بدلاً من DropDownListFor إذا لم تحتاج إلى ربط صارم بنموذجك.

تأكد أيضًا من أن لديك السمة Value في SelectListItem تحتوي على القيمة الصحيحة (في هذه الحالة، قيمة row["Description"].ToString()).

باستخدام هذه الإصلاحات، يجب أن تكون قادرًا على عرض النصوص بشكل صحيح في قائمة الاسقاط الخاصة بك دون ظهور “System.Web.Mvc.SelectListItem”.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

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