在 ASP.Net Web 表单/MVC 中动态加载和添加字段

Posted

技术标签:

【中文标题】在 ASP.Net Web 表单/MVC 中动态加载和添加字段【英文标题】:Loading and Adding fields dynamically in ASP.Net web forms/MVC 【发布时间】:2015-04-11 17:53:40 【问题描述】:

我有一个客户要求我做一个像这样工作的网络应用程序(我不能添加图像,因为我是 Stack Overflow 的新手,它需要 10 的声誉才能做到)。

当页面加载时,它会读取数据库表并为每条记录添加“电子邮件”文本框。

点击“新”会添加一个新的文本框。

点击保存后,如果文本框被修改,它会更新记录。 如果添加了一个新的文本框,它会插入到表格中。

我已经在 Classic Asp 中使用了 vb/asp、带有隐藏输入的 htmljavascript 和 SQL 数据库过程的混合来完成此操作。但是对于每个需要此功能的新表单,我发现它的工作过于繁琐且效率不高。

我对 .Net WebForms 有点陌生,对 MVC 完全陌生。我想知道是否有更简单的方法可以使用这些技术来做到这一点?

谢谢

【问题讨论】:

要渲染集合中的现有对象,您需要使用for 循环或自定义`EditorTemplate。要将新项目动态添加到集合中,您需要 javascript/jquery。 This answer 提供了 2 个选项来说明如何做到这一点。 感谢@StephenMuecke,第二个选项或多或少是我已经在使用经典 asp 做的事情。对我来说不是很好,因为我必须创建几个不同的表单和几个字段。由于我对 .Net 的知识缺乏了解,我还试图理解选项 1。 对于UI的动态操作,最好去一些双向绑定的JS框架。我更喜欢 'knockout.js' 的简单性。 【参考方案1】:

首先,在 MVC 中,您需要一个所谓的显示模型来显示要在视图中显示的项目。假设电子邮件地址属于用户对象,并且它们的类型为“字符串”。在这种情况下,模型可以是用户对象列表。

然后您的视图可以像这样使用这个模型:

@model List<User>

@using (Html.BeginForm("Index", "Home", FormMethod.Post))
    
        <table>
            @for (int i = 0; i < Model.Count;i++ )
             
                <tr>
                    <td>@Html.TextBox("users[" + @i + "].Email", Model[i].Email)</td>
                </tr>
            

        </table>
    

可以在此处找到有关绑定到对象列表的优秀文章: http://www.binaryintellect.net/articles/b1e0b153-47f4-4b29-8583-958aa22d9284.aspx

祝你好运!

【讨论】:

以上是关于在 ASP.Net Web 表单/MVC 中动态加载和添加字段的主要内容,如果未能解决你的问题,请参考以下文章

iframe 在 MVC 视图中加载 asp.net web 表单

在 asp .NET MVC 中提交表单之前动态地将项目添加到列表中

在 ASP.NET MVC 中从部分视图发布动态表单数据

ASP.NET MVC & JQuery 动态表单内容

如何在 ASP.NET MVC 中使用多个表单元素

从 ASP.NET MVC Web API 中的多个表单数据键接收文件