【发布时间】:2013-08-16 07:15:13
【问题描述】:
我已经搜索了几个小时,但找不到我要寻找的答案。我有以下内容:
(存储库.cs)
public class AppRespository
{
private DataContext db = new DataContext();
public IEnumerable<SelectListItem> LoadStates()
{
var query = from d in db.States.ToList()
select new SelectListItem
{
Value = d.StateID.ToString(),
Text = d.State.ToString()
};
return query;
}
}
DataContext.cs
public class DataContext : DbContext
{
public DbSet<States> States { get; set; }
}
ViewModel (States.cs)
public class States
{
[Key]
public int StateID { get; set; }
public IEnumerable<SelectListItem> State { get; set; }
}
控制器(ApplicantController.cs)
// GET: /Applicant/
public ActionResult Index()
{
AppRespository repo = new AppRespository();
States viewModel = new States();
viewModel.State = repo.LoadStates();
return View(viewModel);
}
查看:
@Html.DropDownListFor(model=>model.StateID, Model.State, "select")
为什么在调试我的应用程序时,我的存储库类的这一行为空?
Text = d.State.ToString(),
State 始终为 null,而 StateID 始终被设置。在只使用我的模型和控制器之前,我已经成功加载了这个下拉列表,但我喜欢这种模式。我是 ASP MVC 的中级人员,所以我可能遗漏了一些东西。
感谢任何帮助。
【问题讨论】:
-
您可以发布
States实体的代码吗?在您的 EF 查询中,它可能是一个简单的.Include(x => x.State)。 -
@chappoo 上面我的状态实体的代码就是我所拥有的。我以为我肯定在实施这一点,现在我开始怀疑自己了。我做 EF 查询的唯一地方是在我的 AppRepository.cs 类中。
-
用 d 了解你的意图会很有用。国有财产。看起来您希望它是一个字符串,但它是一个 IEnumerable。此外,为所需视图定义数据 poco 和适当的视图模型也是正常的
-
@chappoo:是的,我希望它是一个字符串。我敢打赌,这就是我产生困惑的地方。我会看看这里提供了什么。
标签: c# asp.net-mvc