Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 向Razor表单动态添加字段_C#_Asp.net Mvc_Razor - Fatal编程技术网

C# 向Razor表单动态添加字段

C# 向Razor表单动态添加字段,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我有一个Razor表单,其中包含我想动态添加项目的列表/表。您可以从下拉列表中选择项目,单击“添加”,下拉列表中的项目将添加到列表中。然后,当我提交表单时,我希望所有这些都通过POST发送,我的控制器的HttpPost方法可以处理输入 是否有一种方法可以动态添加字段,并且仍然能够在HttpPost函数中接受它们作为参数?每个组合框/hiddenfield/textbox/。。。包含在元素中的内容将在提交时发布。不管您是动态创建它们还是默认准备好它们。然而,最大的区别是,对于动态创建的绑定,您无法

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


是否有一种方法可以动态添加字段,并且仍然能够在
HttpPost
函数中接受它们作为参数?

每个组合框/hiddenfield/textbox/。。。包含在
元素中的内容将在提交时发布。不管您是动态创建它们还是默认准备好它们。然而,最大的区别是,对于动态创建的绑定,您无法真正利用我们习惯的整洁绑定。您还必须手动执行验证等操作

然后你会有一个这样的方法:

public ActionResult HandleMyPost(FormCollection form) 
{
    // enumerate through the FormCollection, perform validation etc.
}

第一个答案是正确的,因为您可以迭代表单集合,以获取表单元素中动态插入的字段的值。我只是想补充一点,你可以利用一些整洁的装订

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

完整的.NET小提琴:

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

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