在 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、带有隐藏输入的 html、javascript 和 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 表单