Comment puis-je générer dynamiquement une liste d'objets dans une vue de CRÉER?
-
13-09-2020 - |
Question
J'ai un Employé modèle qui dispose d'un Nom et Société
Je veux être en mesure de construire de multiples Les employés dans un CRÉER vue.J'ai pensé que j'ai besoin de 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 l'afficher à faire sous une autre forme pour le nouvel employé:
<%= Html.TextBoxFor(m => m[3].Name) %>
<%= Html.TextBoxFor(m => m[3].Company) %>
Et continuer à ajouter des éléments de formulaire (et incrémentation de l'index de tableau si vous cliquez sur nouveau).
Gardez à l'esprit que j'ai besoin de construire le formulaire et la liste de façon dynamique dans la création de vue.Je n'ai pas déjà un peuplées, la liste des Employés.
Comment dois-je faire?Les exemples de Code serait génial, depuis que je suis très nouveau pour ASP.NET
La solution
J'ai répondu à une question similaire hier
Ajouter par programmation des contrôles de formulaire
Cet exemple ajoute des éléments à un List(Of T)
sur le bouton de la souris, mais vous pouvez ajouter des éléments à une liste de contrôle toutefois vous le souhaitez.
En gros, vous créez une classe avec plusieurs propriétés de l'objet à être stocké à l'intérieur d'elle.
Ensuite, vous ajoutez l'élément à 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 à utiliser l'EmployeeList classe pour ce faire, vous pouvez simplement créer une liste du déjà existant "Employé" de la classe qui est construit par L2S/EF, etc
Ensuite, vous voulez passer _empList à la vue et à l'utilisation d'une boucle foreach pour parcourir en 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, à votre avis, vous faites quelque chose comme cela
<%
foreach (var employee in Model)
{
%>
<p>Dude's Name: <%= Html.TextBoxFor(employee.Name) %></p>
<p>Dude's Company: <%= Html.TextBoxFor(employee.Company) %></p>
<%
}
%>