我在这里做错了什么?
我想做的是将函数值和函数名称的列表填充到 json 结果中,然后我将在我的主页上使用 jQuery 使用该结果。
错误是:
错误5无法隐式转换类型 'System.Collections.Generic.IEnumerable' 到“System.Web.Mvc.SelectList”。存在显式转换(您是 缺少演员?)
public ActionResult FilterFunctionList(int departmentID = 0)
{
if (departmentID == 0)
{
return this.Json(string.Empty, JsonRequestBehavior.AllowGet);
}
IPACS_Departments ipacs_department = db.IPACS_Department.Find(departmentID);
SelectList ipacs_functions = ipacs_department.IPACS_Functions.Select(m => new SelectListItem
{
Value = SqlFunctions.StringConvert((double)m.functionID).Trim(),
Text = m.name
});
return this.Json(ipacs_functions, JsonRequestBehavior.AllowGet);
}
#endregion
尝试使用 SelectList
的构造函数,它需要
IEnumerable
:
SelectList ipacs_functions = new SelectList(
ipacs_department.IPACS_Functions.Select(m => new SelectListItem {
Value = SqlFunctions.StringConvert((double)m.functionID).Trim(),
Text = m.name
})
, "Value"
, "Text"
);
dasblinkenlight 当然是正确的,但我更喜欢在后面的视图模型代码中将这些集合定义为
IEnumerable<SelectListItem>
,以减少必须使用那些神奇字符串 Value
和 Text
参数:
public int FavoriteMovieID { get; set; }
public IEnumerable<SelectListItem> MoviesToSelectFrom
{
get
{
return from x in OrderDetailsRepo.GetAllMovies()
select new SelectListItem {
Text = x.Title,
Value = x.ID.ToString(),
Selected = x.id == this.FavoriteMovieID,
};
}
}
看起来更干净一点,恕我直言。在视图方面,所有辅助方法都只需要
IEnumerable<SelectListItem>
(SelectList
实现!),所以它们看起来是一样的:
@Html.DropDownListFor(model => model.FavoriteMovieID, Model.MoviesToSelectFrom)