当索引不从零开始时,C#将数据设置为null

时间:2014-07-10 17:53:31

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

我有一个动态表单,其中包含一个如下所示的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)
        {

        }
    }
}

1 个答案:

答案 0 :(得分:0)

我能够通过在删除一个隐藏字段索引之后重新生成隐藏字段索引来实现它。

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+"]");
}

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