Saya ingin memiliki DropDownListFor di MVC
@foreach (var item in Model)
{
@Html.DropDownListFor(modelItem => item.TitleIds, new SelectList(ViewBag.TitleNames as System.Collections.IEnumerable, "TitleId", "Title.TitleText"), "No: " + ViewBag.MagNo, new { id = "TitleIds" })
}
di Controller
public ActionResult ArticleList(int id)
{
ArticleWriter_ViewModel viewModel = new ArticleWriter_ViewModel();
Func<IQueryable<NumberTitle>, IOrderedQueryable<NumberTitle>> orderByFunc = null;
Expression<Func<NumberTitle, bool>> filterExpr = null;
if (id > 0)
{
filterExpr = p => p.MagazineId.Equals(id);
}
var wholeTitles = unitOfWork.NumberTitleRepository.Get(filterExpr, orderByFunc, "Magazine,Title").ToList();
ViewBag.MagNo = wholeTitles[0].Magazine.MagNo.ToString();
ViewBag.MagId = wholeTitles[0].Magazine.Id;
ViewBag.TitleNames = wholeTitles;
return View("../Panel/Magazine/ArticleList", "_BasicLayout", viewModel);
}
tapi saya mendapatkan kesalahan ini
'
System.Web.Mvc.HtmlHelper<System.Collections.Generic.IEnumerable<Cinemavaadabiat.ViewModel.ArticleWriter_ViewModel>>
' tidak memiliki metode yang berlaku bernama 'DropDownListFor
' tetapi tampaknya memiliki metode ekstensi dengan nama itu. Metode ekstensi tidak dapat dikirim secara dinamis. Pertimbangkan untuk mentransmisikan argumen dinamis atau memanggil metode ekstensi tanpa sintaks metode ekstensi.
Saya tidak mengerti kesalahannya, apa yang harus saya periksa?
sumber
ViewBag.MagNo
ke suatubool?
tipe?Perbaikan saya untuk masalah ini adalah menambahkan:
Di bagian atas kontrol parsial. Saya telah melupakannya.
sumber
Untuk memperluas subjek metode ekstensi MVC (begitulah cara saya menemukan pertanyaan ini), saya suka menggunakan
connection.Query()
sintaks Dapper yang akan mengembalikan hasil sebagai fileIEnumerable<dynamic>
.Dimungkinkan juga untuk menggunakan objek dinamis dengan:
Memanggil metode statis secara langsung, sesuai jawaban Jon Skeet :
Membungkusnya di kelas.
Kemudian di MVC View Anda:
sumber