如何在MVC

时间:2017-10-27 22:49:14

标签: c# asp.net .net asp.net-mvc

在我的MVC模型Stage中,我们将WarehouseSchedule作为SelectListItem

public class Stage
{
    public Stage()
    {
        WarehouseSchedule = new List<SelectListItem>();
    }

    public IEnumerable<SelectListItem> WarehouseSchedule { get; set; }
}

在我的控制器中,我这样做:

public ActionResult Stage()
{
    var sch = DataRepository.GetSchedules();
    var model = new Stage() {
        WarehouseSchedule = sch
    };
    return View(model);
}

sch是另一个类的列表,但在执行上述操作时,我收到以下错误:

  

无法将IList隐式转换为SelectListitem错误。

2 个答案:

答案 0 :(得分:0)

对于您的方案,SelectList将是更好的方法,您必须在其构造函数中传递您的scheduleles对象的sch列表,并指定要将其指定的属性用作显示文本和作为它的值。

这将是:

public class Stage
{
    public SelectList WarehouseSchedule { get; set; }
}

然后在行动中你可以填充它:

public ActionResult Stage()
{
    var sch = DataRepository.GetSchedules();
    var model = new Stage() 
           {
             WarehouseSchedule = new SelectList(sch,"ScheduleID","ScheduleName");
           };
    return View(model);
}

上面,假设服务层返回的列表包含名为ScheduleIDScheduleName的属性。

希望它可以帮到你!

答案 1 :(得分:0)

您可以使用Select方法返回的IList上的LINQ GetSchedules方法。

public ActionResult Stage()
{
    var model = new Stage() 
    {
        WarehouseSchedule = DataRepository.GetSchedules()
                                         .Select(x=>new SelectListItem {
                                                          Value=x.Id.ToString(), 
                                                          Text=x.Name })
                                         .ToList();
    };
    return View(model);
}

假设您的其他类具有Id属性,该属性为数字类型且字符串类型为Name属性。