Ich möchte DropDownListFor in MVC haben
@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" })
}
im 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);
}
aber ich bekomme diesen Fehler
'
System.Web.Mvc.HtmlHelper<System.Collections.Generic.IEnumerable<Cinemavaadabiat.ViewModel.ArticleWriter_ViewModel>>
' hat keine anwendbare Methode mit dem Namen 'DropDownListFor
', scheint aber eine Erweiterungsmethode mit diesem Namen zu haben. Erweiterungsmethoden können nicht dynamisch versendet werden. Ziehen Sie in Betracht, die dynamischen Argumente umzuwandeln oder die Erweiterungsmethode ohne die Syntax der Erweiterungsmethode aufzurufen.
Ich kann den Fehler nicht verstehen. Was soll ich überprüfen?
quelle
ViewBag.MagNo
einenbool?
Typ besetzen?Meine Lösung für dieses Problem war das Hinzufügen von:
Oben auf der Teilkontrolle. Ich hatte es vergessen
quelle
Um das Thema der MVC-Erweiterungsmethoden zu erweitern (so bin ich auf diese Frage gestoßen), verwende ich gerne die Dapper-
connection.Query()
Syntax, die Ergebnisse als zurückgibtIEnumerable<dynamic>
.Es ist auch möglich, dynamische Objekte zu verwenden, indem:
Rufen Sie die statische Methode direkt auf, wie Jon Skeet antwortet :
Wickeln Sie es in eine Klasse.
Dann in Ihrer MVC-Ansicht:
quelle