【发布时间】:2016-02-02 15:33:20
【问题描述】:
我刚刚开始使用 MVC 5 设计模式进行开发,我正在尝试使用数据库中的数据填充我的 DropDownList,这就是我的 Country 模型中的内容:
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>)
然而DropDownListFor 我收到这个错误:
方法 'DropDownListFor' 没有重载需要 1 个参数
有谁知道我做错了什么?如果我也正确地遵循 MVC 模式?
谢谢大家
【问题讨论】:
-
向你的视图模型添加一个属性来存储和使用它。 post 中的工作示例代码
-
@Shyju 我添加了一个属性只是为了测试东西,但它仍然不起作用
-
在哪里添加了一个属性?在您的视图模型中?只要您在
DropDownListFor辅助方法中使用该新属性,它就可以正常工作。看看我在之前评论中发布的链接。它有一个工作样本。 -
@Shyju 我了解,但从您的工作示例中,您采取了不同的方法
-
是的。它使用具有 2 个属性的视图模型,一个用于下拉数据,一个用于选定值。有问题吗?
标签: c# asp.net asp.net-mvc