Я хочу иметь DropDownListFor в 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" })
}
в контроллере
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);
}
но я получаю эту ошибку
'
System.Web.Mvc.HtmlHelper<System.Collections.Generic.IEnumerable<Cinemavaadabiat.ViewModel.ArticleWriter_ViewModel>>
' не имеет применимого метода с именем 'DropDownListFor
', но, похоже, имеет метод расширения с этим именем. Методы расширения не могут быть отправлены динамически. Рассмотрите возможность приведения динамических аргументов или вызова метода расширения без синтаксиса метода расширения.
Я не могу понять ошибку, что я должен проверить?
c#
asp.net-mvc
asp.net-mvc-3
nnmmss
источник
источник
ViewBag.MagNo
кbool?
типу?Мое решение этой проблемы заключалось в добавлении:
Вверху частичный контроль. Я забыл об этом.
источник
Чтобы расширить тему методов расширения MVC (именно так я столкнулся с этим вопросом), мне нравится использовать
connection.Query()
синтаксис Dapper, который возвращает результаты в виде файлаIEnumerable<dynamic>
.Также можно использовать динамические объекты:
Вызов статического метода напрямую, согласно ответу Джона Скита :
Обертывание в класс.
Затем в вашем представлении MVC:
источник