Je veux avoir DropDownListFor dans 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" })
}
dans le contrôleur
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);
}
mais j'obtiens cette erreur
«
System.Web.Mvc.HtmlHelper<System.Collections.Generic.IEnumerable<Cinemavaadabiat.ViewModel.ArticleWriter_ViewModel>>
» n'a pas de méthode applicable nommée «DropDownListFor
» mais semble avoir une méthode d'extension de ce nom. Les méthodes d'extension ne peuvent pas être distribuées dynamiquement. Envisagez de convertir les arguments dynamiques ou d'appeler la méthode d'extension sans la syntaxe de la méthode d'extension.
Je ne comprends pas l'erreur, que dois-je vérifier?
la source
ViewBag.MagNo
unbool?
type?Ma solution à ce problème était d'ajouter:
En haut du contrôle partiel. Je l'avais oublié.
la source
Pour développer le sujet des méthodes d'extension MVC (c'est ainsi que j'ai rencontré cette question), j'aime utiliser la
connection.Query()
syntaxe de Dapper qui retournera les résultats sous forme de fichierIEnumerable<dynamic>
.Il est également possible d'utiliser des objets dynamiques en:
Appel de la méthode statique directement, selon la réponse de Jon Skeet :
Emballer dans une classe.
Puis dans votre vue MVC:
la source