2013-10-01 52 views
0

我在编程实体框架初学者MSMVC2下拉列表数据源

我有两个实体“人事档案”和“客户” 客户端实体我设法“模式” &“控制器”和列表,并创建和删除。 我想用“文件夹”做同样的事情,因为知道每个文件属于“客户”关系是: (dosiers.dos_CL_N = clienst.CL_N) 我发现很难使用“DropDownList”中的页面文件创建 感谢您提前 你的帮助,这是我的ASP代码 Create.aspx

<% using (Html.BeginForm()) {%> 
      <%: Html.ValidationSummary(true) %> 

      <fieldset> 
       <legend>Fields</legend> 

       <div class="editor-label"> 
        <%: Html.LabelFor(model => model.DOS_N) %> 
       </div> 
       <div class="editor-field"> 
        <%: Html.TextBoxFor(model => model.DOS_N) %> 
        <%: Html.ValidationMessageFor(model => model.DOS_N) %> 
       </div> 

       <div class="editor-label"> 
        <%: Html.LabelFor(model => model.DOS_CL_N) %> 
       </div> 
       <div class="editor-field">  
        <asp:DropDownList ID="ClientDropDownList" runat="server" 
         DataSourceID="ClientDataSource" DataTextField="CL_NOM" DataValueField="CL_N" 
         AppendDataBoundItems="True"> 
        </asp:DropDownList> 
        <asp:EntityDataSource ID="ClientDataSource" runat="server" 
         ConnectionString="name=ClientsManagerDBEntities" 
         DefaultContainerName="ClientsManagerDBEntities" EnableFlattening="False" 
         EntitySetName="Clients" EntityTypeFilter="Clients" 
         Select="it.[CL_N], it.[CL_NOM]"> 
        </asp:EntityDataSource> 
    </div> 
       <p> 
        <input type="submit" value="Create" /> 
       </p> 
      </fieldset> 

     <% } %> 

     <div> 
      <%: Html.ActionLink("Back to List", "DossiersList")%> 
     </div> 

DossierController.cs

.... 
... 
// GET: /DossiersManager/Dossier/Create 

     public ActionResult Create() 
     { 
      return View(); 
     } 

     // 
     // POST: /DossiersManager/Contact/Create 

     [AcceptVerbs(HttpVerbs.Post)] 
     public ActionResult Create([Bind(Exclude = "Id")] Dossiers DossierToCreate) 
     { 
      if (!ModelState.IsValid) 
       return View(); 

      try 
      { 
       _entities.AddToDossiers(DossierToCreate); 
       _entities.SaveChanges(); 
       return RedirectToAction("DossiersList"); 
      } 
      catch 
      { 
       return View(); 
      } 
     } 
... 
.. 
+0

谢谢所有 – kovarov

回答

0

谢谢所有 我找到了解决办法 我在DossierC中添加此代码ontroller.cs

private DossiersDBEntities DossiersDb=new DossiersDBEntities(); 
private ClientsDBEntities ClientsDb = new ClientsDBEntities(); 
public ActionResult Create() 
     { 
      var ListClients = from c in ClientsDb.Clients 
          select new 
          { 
           c.CL_N, 
           c.CL_NOM 
          }; 
      ViewData["ListClients"] = new SelectList(ListClients, "CL_N", "CL_NOM"); 
      return View(); 

,我改变方式在我的ASP页面创建

<div class="editor-field"> 
    <%: Html.DropDownList("DOS_CL_N", (SelectList)ViewData["ListClients"])%> 
    <%: Html.ValidationMessageFor(model => model.DOS_CL_N) %> 

    </div> 
1

asp:DropDownList是ASP.NET,而不是ASP.NET MVC。对于MVC,您有Html.DropDownList,您可以在控制器中加载实体,而不是视图。

1

使用Html.DropDownListFor助手代替ASP控制,尽量

查看:

<%Html.DropDownListFor(model => model.YourProperty, (SelectList)ViewBag.ListValues)%> 

位指示:

List<SelectListItem> DropDownList = new List<SelectListItem>(); 
DropDownList.Add(new SelectListItem() { Value = "1", Text = "text 1"}); 
DropDownList.Add(new SelectListItem() { Value = "2", Text = "text 2"}); 

ViewBag.ListValues= new SelectList(DropDownList, "Value", "Text"); 
+0

谢谢所有 – kovarov

+0

MVC2 viewbag不存在 – kovarov

+0

对不起,使用'ViewData'如果你是使用MVC 2 ..! – AthibaN