MVC 中的 SelectList 语法不正确

问题描述 投票:0回答:2

我在这里做错了什么?

我想做的是将函数值和函数名称的列表填充到 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
c# asp.net-mvc json linq
2个回答
3
投票

尝试使用 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"
);

0
投票

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)
© www.soinside.com 2019 - 2024. All rights reserved.