通过数组将数据从HTML表单传递到$\u POST

通过数组将数据从HTML表单传递到$\u POST,html,asp.net,asp.net-mvc,post,razor,Html,Asp.net,Asp.net Mvc,Post,Razor,以下是用ASP.NET Razor编写的 我有一个页面,它根据数据库查询的结果动态创建HTML表单中的行。结果集中的每一行对应于表单中的一行。每行有两个输入字段,我需要能够通过$\u POST传递 foreach (var @row in list) { <li> <span style="width: 100px; display: inline-block">@row.Name</span> <input ty

以下是用ASP.NET Razor编写的

我有一个页面,它根据数据库查询的结果动态创建HTML表单中的行。结果集中的每一行对应于表单中的一行。每行有两个输入字段,我需要能够通过$\u POST传递

foreach (var @row in list) {
    <li>
        <span style="width: 100px; display: inline-block">@row.Name</span>
        <input type="text" name="time[]" />minutes on
        <input type="text" name="date[]" />
    </li>
}

但这不起作用。我一直收到“对象引用未设置为对象实例”错误的timeList。我想做的事可能吗?你知道怎么回事吗?

试着把名字的方括号去掉:

foreach (var @row in list) {
    <li>
        <span style="width: 100px; display: inline-block">@row.Name</span>
        <input type="text" name="time" />minutes on
        <input type="text" name="date" />
    </li>
}
foreach(列表中的var@行){
  • @行名称 分钟
  • }
    循环将创建以HTML格式形成数组的重复名称,因此您可以得到所需的内容。但是,我不确定当列表中只有一个项目时,这是否有效,所以请进行测试。

    客户端HTML:

    <form action="~/Page" method="post">
        <input type="hidden" name="product_0_id" value="0" />
        <input type="text" name="product_0_name" value="Prod. #1" />
        <input type="hidden" name="product_1_id" value="1" />
        <input type="text" name="product_1_name" value="Prod. #2" />
    </form>
    
    
    
    服务器:

     string youGroupKey = "product";
     Dictionary<string, string>[] values = Request.Form
         .AllKeys
         .Where(k => k.StartsWith(youGroupKey))
         .GroupBy(k => k
             .Substring(youGroupKey.Length + 1, 1),
                 (a, b) => {
                     return b
                         .ToDictionary(c => c
                             .Substring(youGroupKey.Length + 3), d => Request.Form[d]);
                 }
          )
          .ToArray();
    
    string youGroupKey=“产品”;
    Dictionary[]values=Request.Form
    .所有人
    .Where(k=>k.StartsWith(youGroupKey))
    .GroupBy(k=>k
    .子字符串(youGroupKey.Length+1,1),
    (a,b)=>{
    返回b
    .ToDictionary(c=>c
    .Substring(youGroupKey.Length+3),d=>Request.Form[d]);
    }
    )
    .ToArray();
    
     string youGroupKey = "product";
     Dictionary<string, string>[] values = Request.Form
         .AllKeys
         .Where(k => k.StartsWith(youGroupKey))
         .GroupBy(k => k
             .Substring(youGroupKey.Length + 1, 1),
                 (a, b) => {
                     return b
                         .ToDictionary(c => c
                             .Substring(youGroupKey.Length + 3), d => Request.Form[d]);
                 }
          )
          .ToArray();