मैं C# में viewbag के साथ काम कर रहा हूं और मैं अपने HTML पृष्ठ पर एक <select> टैग में कुछ रंग दिखाना चाहता हूं।

यह सी # में मेरा मॉडल है

public class CoreColorGroup
{
   [Key]
   public long CORECOLORGROUPID { get; set; }

   [MaxLength(100)]
   public string NAME { get; set; }
}

मेरे नियंत्रक में मैं व्यूबैग को इस प्रकार क्वेरी करता हूं:

ViewBag.colorlist = await _context
                            .DbSet<CoreColorGroup>()
                            .Query.OrderBy(x => x.CORECOLORGROUPID)
                            .Select(x => new SelectListItem(x.CORECOLORGROUPID.ToString(), x.NAME))
                            .ToListAsync();

व्यूबैग अच्छा काम कर रहा है मैं अपने आवेदन को डीबग करता हूं और मुझे नियंत्रक के माध्यम से रंग मिलते हैं।

और यह मेरा चयन टैग है:

<div class="form-group">
    <label asp-for="CoreColorGroup" class="control-label"></label>
    <select asp-for="CORECOLORGROUPID" asp-items="@ViewBag.colorlist" class="form-control"></select>
</div>

जब मैं एप्लिकेशन चलाता हूं तो ड्रॉपडाउन में रंगों के नाम के बजाय प्राथमिक कुंजियां होती हैं।

मैं प्राथमिक कुंजियों के बजाय रंगों के नाम कैसे दिखा सकता हूं?

1
Fearcoder 24 अक्टूबर 2019, 12:38

1 उत्तर

सबसे बढ़िया उत्तर

आप SelectListItem को सही ढंग से प्रारंभ नहीं कर रहे हैं, SelectListItem में constructor जिसमें 2 तर्क होते हैं।

Value और Text गुण निर्दिष्ट करें और SelectListItem बनाते समय ऑब्जेक्ट इनिशियलाइज़र सिंटैक्स का उपयोग करें:

.Select(x => new SelectListItem() { Text = x.NAME, Value = x.CORECOLORGROUPID.ToString()})
2
haldo 24 अक्टूबर 2019, 10:05