2013-05-01 78 views
3

我有两个不同的表。用户和ProjectDetails。还有两个不同的控制器可以在这些表上执行CRUD操作。现在,我有一个例子,在User CREATE操作中,我必须从ProjectDetails中的项目列表中选择项目。我试过如下:选择列表返回System.Data.Entity.DynamixProxies而不是MVC中的值asp.net C#

在用户模式,我创建了这个行:

public IEnumerable<ProjectDetail> ProjectDetail { get; set; } 

并在控制器,在创建行动,我已经添加以下代码:

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 ###########(一些数字)..

请有人可以帮助我吗?

问候, 哈瑞

[编辑] - 我在调试模式下检查,发现以下..试图附着我向下钻取该代理的东西,并发现有专案编号的图像..

。我怎么弄到的?

+0

你可以将它映射到一个dto,然后将其发送到视图..something像http://stackoverflow.com/questions/4579598/c-sharp-mvc-3-using-selectlist-with-selected-价值观?rq = 1 – Amitd 2013-05-01 10:39:08

回答

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帮助程序datavaluedatatext使用哪些属性。您使用的重载是您告诉htmlhelper选择了哪个值的重载。

+0

摇摆!!!!!!!! !请现在,你能告诉我如何将其映射到用户字段?我得到了下拉。我应该将下拉列表中选定的值映射到用户模式下的项目中的输入字段。 – 2013-05-01 10:45:10

+0

你有没有像'User.Project'这样的'Project'有一个'Id'字段?如果是,那么做'x => x.Project.Id,新的选择列表'... – 2013-05-01 10:46:19

+0

令人惊叹!太感谢了!!!! – 2013-05-01 10:48:29

0

你可以尝试

public ActionResult Create() 
    { 
     var model = new UserDetail 
     { 
      ProjectDetail = db1.ProjectDetails.ToList() 
     }; 
     return View(model); 
    } 
+0

仍是同样的问题。 :( – 2013-05-01 10:33:26

+0

请尝试像this[email protected](x => x.ProjectDetail,新的SelectList(Model.ProjectDetail,“项目ID”)) – 2013-05-01 10:39:52

+0

对不起, @ Html.DropDownListFor(x => x.UserDetail.ProjectDetail ,新的SelectList(Model.UserDetail.ProjectDetail,“Project ID”)) – 2013-05-01 10:40:13

3

你可以做这样的事情

var projection = db1.ProjectDetails.Select(t => new ProjectDetailsViewModel 
      { 
       Prop1 = t.Prop1, 
       Prop2 = t.Prop2 
      });