【问题标题】:C# Post data set to null when indexes do not start at zero当索引不从零开始时,C# Post 数据设置为 null
【发布时间】:2014-07-10 17:53:30
【问题描述】:

我有一个动态表单,其中包含如下所示的 SKU 列表:

<input type="hidden" value="<%=data.value%>" name="SkuAliases[<%=data.i%>].SKU" />

当我发布这个并且SkuAliases[] 的索引从零开始时,一切都很好,我可以循环遍历每个SkuAlias 而不会打嗝。

一旦我删除索引为零的行,SkuAliases 属性在我的模型上为 null,并且所有验证都失败以及我想对这些数据执行的任何其他操作。

无论索引号如何,如何保持SkuAliases List 填充?

型号

public class Model
{
    public PickboxModel()
    {
        this.SkuAliases = new List<SkuAliasModel>();
    }

    ...
    public List<SkuAliasModel> SkuAliases { get; set; }
}

控制器

[HttpPost]
public string Create(Model model)
{
    if (model.SkuAliases != null)
    {
        foreach(var sku in model.SkuAliases)
        {

        }
    }
}

【问题讨论】:

  • 我也遇到了同样的问题,我所做的是在提交的剩余行的基础上使用 jQuery 重新生成隐藏字段。
  • 这实际上是我最终做的。

标签: c# asp.net-mvc forms post


【解决方案1】:

我能够通过在删除隐藏字段索引后重新生成隐藏字段索引来使其正常工作。

var aliases = $('input[type=hidden]');
for(var i = 0, t = aliases.length; i < t; i++)
{
    aliases[i].name = aliases[i].name.replace(/(\[\d+\])/g, "["+i+"]");
}

显然这不是愚蠢的,但这只是为了说明解决方案。

【讨论】:

    猜你喜欢
    • 2011-11-11
    • 1970-01-01
    • 2013-12-15
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多