Saya mencoba membuat menu tarik-turun sederhana yang mengisinya dengan kategori dari database lokal. Saya menggunakan .NET Core 2.2. Saya mengikuti demo yang menggunakan versi sebelumnya dari ASP.NET MVC di mana mereka menggunakan ViewBag untuk mentransfer daftar dari pengontrol untuk dilihat. Untuk beberapa alasan, ViewBag tidak berfungsi memberi saya kesalahan kompilasi "ViewBag tidak ada dalam konteks saat ini". Setelah sedikit riset, saya memilih untuk menggunakan ViewData yang tampaknya berfungsi dari pengontrol tetapi saya mengalami sedikit kesulitan menampilkan Nama kategori dari model saya karena ketika saya menjalankan halaman opsi drop-down menampilkan "Model. Visportfolio.Category" daripada kategori Nama itu sendiri.

Saya cukup baru dalam HTML jadi saya mencoba mereplikasi kode dari demo tetapi saya mengalami kesulitan mengakses bidang kelas Kategori saya. Saya mencoba menggunakan ViewBag karena dari penelitian saya, ViewData dan ViewBag "dapat dipertukarkan" tetapi tidak berhasil.

HTML untuk tempat saya memanggil menu tarik-turun saya, kode tidak dikompilasi karena dikatakan CategoryName dan CategoryId tidak mengandung definisi dan tidak ada metode ekstensi yang dapat diakses

    <form asp-controller="my_dropdown" asp-action="CreatePortfolio" method="post" class="form-horizontal" role="form">
        <div class="form-group">
            <div class="row">
                <div class="alert-danger" asp-validation-summary="ModelOnly"></div>
                <div class="col-xs-12 col-sm-6 col-md-6 col-lg-4">
                    <label asp-for="CategoryName" class="control-label"></label>
                    <select asp-for="CategoryId"
                        class="form-control"
                        asp-items="@(new SelectList(ViewBag.categorylist, "CategoryId", "CategoryName"))">
                    </select>
                    @Html.DropDownList("categorylist",
                        new SelectList((System.Collections.IEnumerable) ViewData["categorylist"]), "Select Category","CategoryName" )
                </div>
            </div>
        </div>
        <div class="form-group">
            <div class="row">
                <div class="col-xs-12 col-sm-6 col-lg-4">
                    <input id="Submit1" type="submit" value="submit" />
                </div>
            </div>
        </div>
    </form>

Ini adalah kode di balik html

public void OnGet()
        {

            // ----- Getting Data From Database Using EntityFrameworkCore ----
            categorylist = (from category in _context.Category
                            select category).ToList();

            // ----- Inserting Select Item in List -----
            categorylist.Insert(0, new Category { CategoryId = 0, CategoryName = "Select" });

            // ----- Assigning categorylist to ViewBag.ListOfCategory -----
           //  ViewBag.categortyList = categorylist;
            ViewData["categorylist"] = categorylist;
        }

Model

namespace Visportfolio.Models
{
    [Table("Category")]
    public class Category
    {
        [Key]
        public int CategoryId { get; set; }
        public string CategoryName { get; set; }
    }
}
0
dannyriv 13 Agustus 2019, 00:02

1 menjawab

Jawaban Terbaik

Anda mencari

new SelectList(ViewData[categoryList], "Value", "Text")

SelectList memiliki banyak kelebihan yang dapat Anda gunakan, lihat di sini

Jadi gunakan

@Html.DropDownList("categorylist",
                    new SelectList((System.Collections.IEnumerable) ViewData["categorylist"], "CategoryId", "CategoryName"), "Select Category","CategoryName" )
1
Bosco 12 Agustus 2019, 21:43