c# – 动态地将字段添加到Razor表单

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

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

解决方法

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

下面的代码接受针对操作发布的动态文本框的动态列表.此示例中的每个文本框都与dynamicField具有相同的名称. MVC很好地将这些绑定到一个字符串数组中.

完整的.NET小提琴: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();
    }

输出截图

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...