nnm*_*mss 110 c# asp.net-mvc asp.net-mvc-3
我想在MVC中使用DropDownListFor
@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" })
}
Run Code Online (Sandbox Code Playgroud)
在控制器中
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);
}
Run Code Online (Sandbox Code Playgroud)
但是我得到了这个错误
'
System.Web.Mvc.HtmlHelper<System.Collections.Generic.IEnumerable<Cinemavaadabiat.ViewModel.ArticleWriter_ViewModel>>'没有名为'DropDownListFor'的适用方法,但似乎有一个名称的扩展方法.无法动态分派扩展方法.考虑转换动态参数或调用扩展方法而不使用扩展方法语法.
我无法理解错误,我应该检查一下它?
bas*_*bas 190
您在扩展方法中使用动态类型,这是不受支持的.
将动态类型转换为实际类型,它将起作用.
从我现在看到的,我会说:
(string) ViewBag.MagNo
Run Code Online (Sandbox Code Playgroud)
哪会导致
@foreach (var item in Model)
{
@Html.DropDownListFor(modelItem => item.TitleIds,
new SelectList(ViewBag.TitleNames as System.Collections.IEnumerable,
"TitleId", "Title.TitleText"),
"No: " + (string) ViewBag.MagNo,
new { id = "TitleIds" })
}
Run Code Online (Sandbox Code Playgroud)
mka*_*kaj 41
我对这个问题的解决方法是添加:
@model MyModel
Run Code Online (Sandbox Code Playgroud)
在部分控制的顶部.我忘了它.
为了扩展MVC扩展方法的主题(这是我遇到这个问题的方式),我喜欢使用Dapper的connection.Query()语法,该语法将返回结果为IEnumerable<dynamic>。
也可以通过以下方式使用动态对象:
根据Jon Skeet的回答,直接调用static方法:
@model IEnumerable<dynamic>
@PartialExtensions.Partial(Html, "~/link/to/_partialView.cshtml", Model)
Run Code Online (Sandbox Code Playgroud)将其包装在课堂上。
public class DynamicQueryResult
{
public dynamic QueryResults {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
然后在您的MVC视图中:
@model Namespace.DynamicQueryResult
@Html.Partial("~/link/to/_partialView.cshtml", Model)
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
54943 次 |
| 最近记录: |