我有两张不同的牌桌。用户和项目详细信息。还有两个不同的控制器可以对这些表进行CRUD操作。现在,我有一个案例,在User CREATE操作中,我必须从ProjectDetails中的项目列表中选择项目。我尝试了以下方法:
在用户模型中,我创建了这一行:
public IEnumerable<ProjectDetail> ProjectDetail { get; set; }
在控制器中,在创建Action中,我添加了以下代码:
public ActionResult Create()
{
var model = new UserDetail
{
ProjectDetail = db1.ProjectDetails
};
return View(model);
}
在创建视图中,我试图获取项目ID列表,如下所示:
@Html.DropDownListFor( x => x.ProjectDetail, new SelectList(Model.ProjectDetail, "Project ID"))
然而,我运行,我得到的行数(等于项目数)
System.Data.Entity.DynamicProxies.ProjectDetails_F ###########(有些数字)..
有人可以帮助我吗?
此致 哈
[编辑] - 我在调试模式中检查并发现以下内容..尝试附加图像..
我钻了那个代理商的东西,在那里找到了ProjectID。我怎么能得到它?
答案 0 :(得分:4)
您使用了错误的重载,请改用:
@Html.DropDownListFor( x => x.ProjectDetail,
new SelectList(Model.ProjectDetail, "ProjectId","ProjectName"))
// where ProjectId is the unique identifier field of `ProjectDetail`
// and `ProjectName` is the text you want to show in the dropdown
在您的代码中,您没有告诉html帮助器datavalue
和datatext
使用哪些属性。您使用的重载是告诉htmlhelper选择哪个值的重载。
答案 1 :(得分:3)
您可以执行类似
的操作var projection = db1.ProjectDetails.Select(t => new ProjectDetailsViewModel
{
Prop1 = t.Prop1,
Prop2 = t.Prop2
});
答案 2 :(得分:0)
你能试试吗
public ActionResult Create()
{
var model = new UserDetail
{
ProjectDetail = db1.ProjectDetails.ToList()
};
return View(model);
}