2010-07-09 23 views
0

J'ai un employé modèle qui a un Nom et SociétéComment créer de façon dynamique une liste d'objets dans une vue CREATE?

Je veux être en mesure de construire plusieurs employés dans un CREATE vue. Je me suis dit que je dois créer un IList<Employee> et faire quelque chose comme:

<%= Html.TextBoxFor(m => m[0].Name) %> 
<%= Html.TextBoxFor(m => m[0].Company) %> 

<%= Html.TextBoxFor(m => m[1].Name) %> 
<%= Html.TextBoxFor(m => m[1].Company) %> 

Si un utilisateur clique sur « Ajouter un autre employé », je veux en vue de faire une autre forme pour le nouvel employé:

<%= Html.TextBoxFor(m => m[3].Name) %> 
<%= Html.TextBoxFor(m => m[3].Company) %> 

Et continuez à ajouter des éléments de formulaire (et incrémenter l'index de tableau s'ils cliquent dessus à nouveau). N'oubliez pas que j'ai besoin de créer dynamiquement le formulaire et la liste dans la vue de création. Je n'ai pas déjà une liste des employés.

Comment est-ce que je devrais faire ceci? Des exemples de code serait génial, puisque je suis très nouveau pour ASP.NET

Répondre

0

je répondu à une question similaire hier
Programmatically add controls to form

Cet exemple ajoute des éléments à un List(Of T) sur le bouton clic, mais vous pouvez ajouter des éléments à une liste de contrôle que vous aimez.

Fondamentalement, vous créez une classe avec plusieurs propriétés d'objet à stocker en son sein.

Ensuite, vous ajoutez des articles à la collection.

Imports System.Collections.Generic 


Partial Class Default2 
    Inherits System.Web.UI.Page 

    ''# we need to create an array of our control list class 
    Public Shared _empList As List(Of EmployeeList) 



    ''# button click event 
    Protected Sub AddStuff 

     ''# create a new employee 
     Dim emp As Employee = New Employee 
     With emp 
      .Name = "Joe" 
      .Company = "Acme Welding" 
     End With 

     ''# add the employee to our custom array 
     _empList.Add(New ControlList(emp)) 

    End Sub 



    ''# this is our custom Employee List 
    ''# the idea behind this is for us to store 
    Public Class EmployeeList 
     Private _employee As Employee 
     Public Property Employee As Employee 
      Get 
       Return _employee 
      End Get 
      Set(ByVal value As Employee) 
       _employee = value 
      End Set 
     End Property 

     Public Sub New(ByVal employee As Employee) 
      _employee = employee 
     End Sub 

    End Class 


End Class 

Notez que vous n'avez pas vraiment d'utiliser la classe ListeEmployes pour ce faire, vous pouvez simplement créer une liste de la classe déjà existante « employé » qui est construit par L2S/EF, etc

Ensuite, vous passeriez _empList à la vue et utiliser une boucle foreach pour itérer à travers elle.

EDIT:

Essayez quelque chose le long de ces lignes

public ActionResult ListEmployees() 
{ 
    List<Employee> _empList = new List<Employee>(); 

    //'# create a new employee 
    Employee emp = new Employee(); 
    { 
     emp.Name = "Joe"; 
     emp.Company = "Acme Welding"; 
    } 

    //'# add the employee to our custom array 
    _empList.Add(new emp); 

    return View(_empList); 
} 

Alors, selon vous, vous faites quelque chose comme ça

<% 
foreach (var employee in Model) 
{ 
    %> 
    <p>Dude's Name: <%= Html.TextBoxFor(employee.Name) %></p> 
    <p>Dude's Company: <%= Html.TextBoxFor(employee.Company) %></p> 
    <% 
} 
%> 
+0

Pourriez-vous me parcourir en termes de C# si elle est pas trop beaucoup de mal? Bien que votre solution semble fonctionner. – Fred

+0

voir mon édition ci-dessus. –