我有一个 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();
}
输出截图
关于c# - 动态添加字段到 Razor 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28822699/