HTML表单 - 如何处理动态数量的输入?

时间:2012-08-09 01:15:29

标签: c# html asp.net-mvc

我有一个提交食谱的网页。有5个成分领域。如果配方需要超过5种成分,则有一个“添加另一种成分”的按钮,一些java脚本会加载另一种成分输入供他们使用。
我不确定如何将这些数据正确地发布到我的后端,即MVC4 / C#。

我可以给他们所有相同的id =成分并将它们收集为字符串ingrdient []吗?或者当输入数量可以改变时,获得表格输入的最佳做法是什么?

感谢。

3 个答案:

答案 0 :(得分:3)

如果您使用方括号给出相同的名称,则在提交表单时,您应该能够将它们作为数组到达。

<input type="text" name="data[]" value="">

答案 1 :(得分:2)

好的,这是一个示例: 您可以使用此方法:

 <div class="editor-field">
        <input type="text" name="MyModelArray[0].Sugar" value="" />
        <input type="text" name="MyModelArray[1].Tea" value="" />
        <input type="text" name="MyModelArray[0].Sugar" value="" />
        <input type="text" name="MyModelArray[1].Tea" value=""/>
    </div>
    <p>
        <input type="submit" value="Create" />
    </p>

现在您可以使用以下命令在控制器中获取此信息:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MvcApplication1.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        [HttpPost]
        public ActionResult Index(List<Ingredient> MyModelArray) //Put a breakpoint here to see 
        {
            return View();
        }
        [HttpPost]
        public ActionResult About(List<string> MyStringArray) //Use this if you don't want a model
        {
            return View();
        }
    }
    public class Ingredient
    {
        public string Sugar { get; set; }
        public string Tea { get; set; }
    }
}

答案 2 :(得分:0)

就MVC4而言,我不确切知道什么是最好的方法,但你绝对可以给所有输入同名,并且在提交之后,你应该能够在提交时检索它们。服务器端只需查看HttpContext.Request.Params对象。