Saya mencoba agar SelectList saya berfungsi. Saya mencoba menambahkan opsi di kelas model, tetapi saya tidak dapat membuatnya berfungsi dengan kesalahan

Pengujian Anggota.TaxIDType tidak dapat diakses dengan referensi instans; memenuhi syarat dengan nama jenis sebagai gantinya

Yang saya tidak yakin tentang cara memperbaikinya.

Saya menambahkan item SelectList ke model saya:

public static List<SelectListItem> TaxIDType = new List<SelectListItem>()
{
    new SelectListItem() { Text = "FEIN", Value = "FEIN" },
    new SelectListItem() { Text = "SSN", Value = "SSN" }
};

Saya mencoba memanggil tampilan menggunakan pernyataan berikut.

@Html.DropDownListFor(Model => Model.TaxIDType, class.TaxIDType)

Saya mendapatkan dua kesalahan berikut:

'IEnumerable' tidak mengandung definisi untuk 'TaxIDType' dan tidak ada metode ekstensi yang dapat diakses 'TaxIDType' yang menerima argumen pertama dari tipe 'IEnumerable' dapat ditemukan (apakah Anda melewatkan petunjuk penggunaan atau referensi Majelis?)


Anggota 'Testing.TaxIDType' tidak dapat diakses dengan referensi instans; memenuhi syarat dengan nama jenis sebagai gantinya

Dapatkah seseorang membantu saya dengan ini?

0
Harsha 17 April 2020, 21:38

1 menjawab

Jawaban Terbaik

Berikut adalah penjelasan langkah demi langkah menggunakan pembantu DropDownListFor dalam kasus Anda.

  1. Buat model yang akan berisi kumpulan instance SelectListItem.

    public class MyModel
    {
        public List<SelectListItem> TaxIDType = new List<SelectListItem>()
        {
            new SelectListItem() { Text = "FEIN", Value = "FEIN" },
            new SelectListItem() { Text = "SSN", Value = "SSN" }
        };
    }
    

Catatan: jika mau, Anda bahkan dapat membuat properti static, namun, Anda perlu mengubah cara Anda mereferensikan properti pada tampilan (akan menjelaskannya nanti)

  1. Buat model dan berikan ke tampilan.

    public ActionResult Index()
    {
        var viewModel = new MyModel();
        return View(viewModel);
    }
    
  2. Dalam tampilan, nyatakan bahwa tampilan Anda menggunakan kelas MyModel. Anda dapat melakukannya dengan meletakkan @model helper di atas tampilan Anda (file .cshtml).

     @model WebApplication3.Controllers.MyModel 
    

Di sini, WebApplication3.Controllers adalah namespace model Anda dan MyModel adalah namanya. Jangan gunakan namespace dan model yang terdaftar, tetapi ubahlah menjadi milik Anda.

  1. Gunakan pembantu DropDownListFor sebagai berikut as

     @Html.DropDownListFor(x => ??, Model.TaxIDType)
    

Dalam contoh, Model adalah properti yang diisi oleh kerangka kerja untuk memungkinkan Anda mengakses instance kelas yang Anda lewati dalam metode View() di dalam pengontrol. (MyModel contoh dalam kasus ini). Dengan menulis Model.TaxIDType Anda mereferensikan properti yang berisi daftar item untuk mengisi dropdown. Perhatikan, bahwa properti dalam model tidak ditandai sebagai static, oleh karena itu kita harus mengaksesnya melalui referensi instance (Model). Namun, Anda memang dapat membuat properti static. Dalam hal ini, Anda perlu mengubah penggunaan dalam tampilan sebagai berikut:

     @Html.DropDownListFor(x => ??, MyModel.TaxIDType)

Hal terakhir yang perlu disebutkan: lihat tanda tanya. Untuk mendapatkan kembali nilai yang dipilih, Anda harus memetakannya ke model. Salah satu cara untuk melakukannya adalah dengan memperluas model.

public class MyModel
{
    public string SelectedTaxIdType { get; set; }

    public List<SelectListItem> TaxIDType = new List<SelectListItem>()
    {
        new SelectListItem() { Text = "FEIN", Value = "FEIN" },
        new SelectListItem() { Text = "SSN", Value = "SSN" }
    };
}

Dan daripada mengubah tampilan

@Html.DropDownListFor(x => x.SelectedTaxIdType, Model.TaxIDType)
1
Oleksandr Kotvytskyi 20 April 2020, 11:22