2013-10-01 104 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