MVC5填充DropDownList

时间:2016-02-01 16:00:21

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

我刚开始使用MVC 5设计模式进行开发,我试图用数据库中的数据填充我的DropDownList,这就是我在我的国家模型中所拥有的:

public class Country 
{
   public DataTable GetAllCountries()
   {
     string theSql = "SELECT * FROM Country";
     IDataAccess dataAccess = new DataAccess();
     return dataAccess.GetData(theSql);
   }
}

然后在我的控制器中我有:

public ActionResult Index()
{
   List<SelectListItem> objResult = new List<SelectListItem>();
   Models.Country country = new Models.Country();
   DataTable result = country.GetAllCountries();

   foreach(DataRow item in result.Rows)
   {
      SelectListItem temp = new SelectListItem();
      temp.Value = item["id"].ToString();
      temp.Text = item["country"].ToString();
      objResult.Add(temp);
   }
      ViewBag.DropDownResult = objResult;
      return View();
}

然后在我的部分视图中,我有:

@model MyProject.Models.Country
@Html.DropDownListFor(ViewBag.DropDownResult as List<SelectListItem>)

Howverver on DropDownListFor我接受了这个错误:

方法没有重载&#39; DropDownListFor&#39;需要1个参数

有谁知道我做错了什么?如果我也正确地遵循MVC模式吗?

谢谢你们

1 个答案:

答案 0 :(得分:1)

您需要指定要在哪个对象中显示的属性。

@Html.DropDownListFor需要至少2个参数。第一个应该是对象,第二个是包含项目的列表。 类似的东西:

 @model MyProject.Models.Country
 @Html.DropDownListFor(m => m.SomeProperty, ViewBag.DropDownResult as List<SelectListItem>)