Saya bekerja dengan viewbag di C# dan saya ingin menunjukkan beberapa warna dalam tag <select> di halaman HTML saya.

Ini adalah model saya di c#

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

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

Di Controller saya, saya menanyakan viewbag seperti ini:

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

Viewbag berfungsi dengan baik, saya men-debug aplikasi saya dan saya mendapatkan warna melalui pengontrol.

Dan ini adalah tag pilihan saya:

<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>

Saat saya menjalankan aplikasi, tarik-turun berisi kunci utama alih-alih nama warna.

Bagaimana cara menampilkan nama warna alih-alih kunci utama?

1
Fearcoder 24 Oktober 2019, 12:38

1 menjawab

Jawaban Terbaik

Anda tidak menginisialisasi SelectListItem dengan benar, SelectListItem tidak memiliki konstruktor yang membutuhkan 2 argumen.

Tentukan properti Value dan Text dan gunakan sintaks penginisialisasi objek saat membuat SelectListItem:

.Select(x => new SelectListItem() { Text = x.NAME, Value = x.CORECOLORGROUPID.ToString()})
2
haldo 24 Oktober 2019, 10:05