我在这里做错了什么?
我要做的是将一个函数值和函数名列表填充到一个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
答案 0 :(得分:3)
尝试使用constructor of SelectList
that takes an 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"
);
答案 1 :(得分:0)
dasblinkenlight 当然是正确的,但我更喜欢在后面的ViewModel代码中将这些集合定义为IEnumberable<SelectListItem>
,以减少必须拥有那些神奇的“值”和“文本” “参数:
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,
};
}
}
嘘,看起来有点清洁,恕我直言。在View方面,所有帮助方法只需要IEnumberable<SelectListItem>
(SelectList实现!),所以它们看起来一样:
@Html.DropDownListFor(model => model.FavoriteMovieID, Model.MoviesToSelectFrom)