我尝试从我的数据库中填充DropDownList,但仍然有错误
Cannon implicity将类型'System.Web.Mvc.SelectList'转换为'System.Collections.Generic.IEnumerable< MyWeb.Models.HomeViewModels.SelectListItem>'
我的模特:
public class BazarInsertViewModel
{
public int SelectedCategoryId { get; set; }
public IEnumerable<SelectListItem> MyCategory { get; set; }
}
public class SelectListItem
{
public string Value { get; set; }
public string Text { get; set; }
}
和我的控制员:
public ActionResult BazarInsert()
{
var model = new Models.HomeViewModels.BazarInsertViewModel
{
MyCategory = GetCategory()
};
return View(model);
}
private IEnumerable<Models.HomeViewModels.SelectListItem> GetCategory()
{
var dbo = new WebEntities();
var category = dbo
.bazar
.Select(x =>
new Models.HomeViewModels.SelectListItem
{
Value = x.ID.ToString(),
Text = x.TITLE
});
return new SelectList(category, "Value", "Text");
}
请你解释一下我做错了什么?
答案 0 :(得分:2)
返回category.ToList()
就可以了。我在我的一个项目中使用它并且工作正常。
private IEnumerable<System.Web.Mvc.SelectListItem> GetCategory()
{
var dbo = new WebEntities();
var category = dbo
.bazar
.Select(x =>
new System.Web.Mvc.SelectListItem
{
Value = x.ID.ToString(),
Text = x.TITLE
});
return category.ToList();
}
答案 1 :(得分:1)
您的方法是IEnumerable<Models.HomeViewModels.SelectListItem>
!并且您的代码返回SelectList
SelectList
无法转换为您的自定义SelectListItem
类(没有显式转换)
仅供参考:SelectListItem
中已有System.Wb.Mvc
个班级。为什么不使用它?
private IEnumerable<System.Web.Mvc.SelectListItem> GetCategory()
{
var dbo = new WebEntities();
var category = dbo
.bazar
.Select(x =>
new System.Web.Mvc.SelectListItem
{
Value = x.ID.ToString(),
Text = x.TITLE
}).ToList();
return category;
}
答案 2 :(得分:0)
你需要传递
new SelectList(category.Select(x => new{Value=x.Value,Text=x.Text}).ToList(), "Value", "Text");
我给你提示初始化List但请获取课程对象请写完整的班级名称。
答案 3 :(得分:-1)
在GetCategory()中,您返回一个SelectList,但您的方法签名表明IEnumerable。
将您的模型属性更改为SelectList:
public class BazarInsertViewModel
{
public int SelectedCategoryId { get; set; }
public SelectList MyCategory { get; set; }
}
public class SelectListItem
{
public string Value { get; set; }
public string Text { get; set; }
}
返回SelectList的方法签名
public ActionResult BazarInsert()
{
var model = new BazarInsertViewModel
{
MyCategory = GetCategory()
};
return View(model);
}
private SelectList GetCategory()
{
var dbo = new WebEntities();
var category = dbo
.bazar
.Select(x =>
new Models.HomeViewModels.SelectListItem
{
Value = x.ID.ToString(),
Text = x.TITLE
});
return new SelectList(category, "Value", "Text");
}
答案 4 :(得分:-1)
看看GetCategory()
你应该返回IEnummerable<SelectListItem>
类型的列表。相反,您将返回SelectList
类型的单个项目。
如果可以更改您的代码,请在此处检查另一个solution或其他类似问题的方法。