c# - 动态添加字段到 Razor 表单

标签 c# asp.net-mvc razor

我有一个 Razor 表单,其中包含我想动态添加项目的项目列表/表格。您可以从下拉列表中选择项目,单击“添加”,下拉列表中的项目将添加到列表中。然后我希望在提交表单时通过 POST 发送所有这些信息,并且我的 Controller 的 HttpPost 方法可以处理输入。

有没有办法动态添加字段并且仍然能够接受它们作为 HttpPost 函数中的参数?

最佳答案

第一个答案是正确的,因为您可以遍历表单集合以获取表单元素中动态插入的字段的值。我只是想补充一点,您可以利用 一些 简洁的绑定(bind)。

下面的代码接受针对该操作发布的动态文本框列表。此示例中的每个文本框都与 dynamicField 同名。 MVC 很好地将它们绑定(bind)到一个字符串数组中。

完整的 .NET fiddle :https://dotnetfiddle.net/5ckOGu

动态添加示例字段的示例代码(为清晰起见的片段)

            @using (Html.BeginForm())
            {
                @Html.AntiForgeryToken()

                <div id="fields"></div>

                <button>Submit</button>
            }


            <div style="color:blue"><b>Data:</b> @ViewBag.Data</div>

    <script type="text/javascript">

        $(document).ready(function() {
            var $fields = $('#fields');
            $('#btnAddField').click(function(e) {
                e.preventDefault();
                $('<input type="text" name="dynamicField" /><br/>').appendTo($fields);
            });
        });

    </script>

接受帖子中动态字段的操作示例代码。

    [HttpPost]
    public ActionResult Index(string[] dynamicField)
    {
        ViewBag.Data = string.Join(",", dynamicField ?? new string[] {});
        return View();
    } 

输出截图

sample screenshot

关于c# - 动态添加字段到 Razor 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28822699/

相关文章:

c# - 测试异步方法不会给出一致的结果

c# - 如何处理事件处理程序引发的域事件?

asp.net - 将 ViewBag 实例传递到 Razor 中的 HiddenFor 字段

使用 MVC 4 的 Razor 智能感知和代码格式化

c# - 如何使用 C# 代码从 .mdf 文件头获取 Microsoft Sql Server 的产品版本

c# - 将我的 DateTime 转换为 UTC 时遇到问题

javascript - 如何为 MVC 功能创建 javascript 文件

asp.net-mvc - MVC Controller 被调用两次

asp.net-mvc-3 - 自定义 WebPageRazorHostFactory

TargetFrameworkVersion 的 C# 编译器开关