asp.net - 在 asp.net mvc 中绑定(bind)缺少元素的数组

标签 asp.net asp.net-mvc asp.net-mvc-2

我正在尝试将动态元素数组绑定(bind)到 View 模型,其中 html 中可能缺少索引

例如与 View 模型

class FooViewModel
{
   public List<BarViewModel> Bars { get; set; }
}

class BarViewModel
{
   public string Something { get; set; }
}

和 html

<input type="text" name="Bars[1].Something" value="a" />
<input type="text" name="Bars[3].Something" value="b" />
<input type="text" name="Bars[6].Something" value="c" />

此时,bars 将为 null。我怎样才能让模型绑定(bind)器忽略任何丢失的元素?即上述内容将绑定(bind)到:

FooViewModel
{
     Bars
     {
            BarViewModel { Something = "a" },
            BarViewModel { Something = "b" },
            BarViewModel { Something = "c" }
     }
}

最佳答案

添加 .Index 作为您的第一个隐藏输入,以处理无序元素,如 Phil Haacked blog 中所述。帖子:

<input type="text" name="Bars.Index" value="" />
<input type="text" name="Bars[1].Something" value="a" />
<input type="text" name="Bars[3].Something" value="b" />
<input type="text" name="Bars[6].Something" value="c" />

关于asp.net - 在 asp.net mvc 中绑定(bind)缺少元素的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3564991/

相关文章:

asp.net - Windows Azure 上的简单文件上传

asp.net-mvc - CKEditor 和 MVC

.net - 在 ASP.NET 中使用 session 的优点和缺点

asp.net-mvc - 已发布的 MVC 站点,How to Password Protect Databases?

asp.net - 使用 SqlDataSource 删除时出现空字典错误 - ASP.net ListView

c# - 压缩URL中的参数

asp.net - 如何使用 ASP.Net -- Html.ActionLink()

asp.net-mvc-2 - MVC 中的 Optgroup 下拉支持 - 模型绑定(bind)问题

具有 SQL 架构的 ASP.NET 成员(member)资格提供程序

asp.net - 在 asp.net MVC2 中的每个 Web 请求上创建的 nhibernate session