绑定一个空对象列表

本文关键字:对象 列表 一个 绑定 | 更新日期: 2023-09-27 18:20:13

我正在尝试动态填充视图中的列表。我的意思是,用户将选择一些"项目"(这些项目也是对象),通过选择,我必须填充一个新的对象列表。问题是,当我稍后试图将@Html.TextBoxFor[(]与空列表绑定以保存所选值时,当然列表中还没有对象,因此它会产生一个空引用异常。

//解释问题的一些代码-这个DDL将所有"项目"按顺序排列,用户可以选择其中的一些//

 @Html.DropDownListFor(m => m.ItemsToSelect, new SelectList(Model.ItemsToSelect.Select(s => new { s.id, s.descripcion}).ToList(), "id", "descripcion"))

这段代码试图将空列表与一个组合关联起来,以便在我进行POSTBACK 时获得对象

 @Html.TextBoxFor(m => m.selectedItems[0].id)

最后一个文本框是开头为null的文本框。一个实际可行的解决方案是用空对象填充这个列表,但我认为必须有另一种方法来解决它

感谢大家,我希望有人能理解我想解决的问题。

绑定一个空对象列表

我看到了问题,您试图将文本框绑定到页面呈现时不存在的项。

解决方案很简单,只需创建一个普通的HTML <input type='text' name='someProperty' />控件,并赋予它与模型匹配的name属性。ASP.NET MVC将在您发布表单时自动将其添加到您的模型中。

public class MyModel
{
    string someProperty {get; set;}
}

当选择一个项目时,您可能必须使用一点jquery来填充文本框的值,例如类似的东西。$('#myDDL').change(function() { $('#myTextbox').val($('#myDDL').val()) });

或者,您可以使用上面的name方法提交下拉列表本身,我认为它会发送选定的值,如果选择了多个值,则可能会用逗号分隔它们。

为什么不检查selectedItems不为空?

@if (Model.selectedItems != null && Model.selectedItems.Count() > 0) {
   @Html.TextBoxFor(m => m.selectedItems[0].id)
}