【问题标题】:How do I dynamically build a list of objects in a CREATE view?如何在 CREATE 视图中动态构建对象列表?
【发布时间】:2020-10-24 13:48:02
【问题描述】:

我有一个 Employee 模型,该模型具有 NameCompany

我希望能够在一个 CREATE 视图中构建多个 Employees。我想我需要创建一个 IList<Employee> 并执行以下操作:

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

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

如果用户点击“添加其他员工”,我希望视图为新员工制作另一个表单:

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

并继续添加表单项(如果他们再次单击它,则增加数组索引)。

请记住,我需要在创建视图中动态构建表单和列表。我还没有填充的员工列表。

我应该怎么做?代码示例会很棒,因为我对 ASP.NET 很陌生

【问题讨论】:

    标签: c# asp.net asp.net-mvc


    【解决方案1】:

    我昨天回答了一个类似的问题
    Programmatically add controls to form

    此示例在单击按钮时将项目添加到List(Of T),但您可以根据需要将项目添加到控制列表。

    基本上,您创建一个具有多个要存储在其中的对象属性的类。

    然后将项目添加到集合中。

    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
    

    请注意,您实际上不必使用 EmployeeList 类来执行此操作,您可以简单地创建一个由 L2S/EF 等构建的已经存在的“Employee”类的列表

    然后您将 _empList 传递给视图并使用 foreach 循环对其进行迭代。

    编辑:

    尝试这些方法

    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);
    }
    

    那么在你看来,你会做这样的事情

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

    【讨论】:

    • 如果不是太麻烦的话,您能指导我使用 C# 吗?尽管您的解决方案听起来可行。
    猜你喜欢
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-08
    • 2017-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多