我得到一个类型的错误是没有意义的:ListBoxFor类型的错误是没有意义的
具有关键的ViewData的项目“OptionIds”的类型为“System.Collections.Generic.List`1 [[System.Int32,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]],但必须是'IEnumerable < .SelectListItem>'类型。
它要求一个int列表,但这不是该方法实际要求的。这里发生了什么?
我在遇到这种情况时,下面的列表项OptionList
为空,但这次不是这种情况。
错误发生在帖子上。表单加载正常,但提交导致死亡的黄色屏幕。我在这里使用的所有部件都有相同的另一个模型,并且这个模型很好。我在这里撕掉我的头发。
CSHTML:
@Html.ListBoxFor(model => model.OptionNames, Model.OptionList, new { @class = "form-control", disabled = "true" })
型号:
public class MyModelEditViewModel
{
public List<int> OptionIds { get; set; }
public IEnumerable<SelectListItem> OptionList { get; set; }
// Empty constructor for EF
public MyModelEditViewModel() { }
// Called from controller with an enumerable from repository
public MyModelEditViewModel(IEnumerable<SelectListItem> optionList)
{
// Not null
OptionList = optionList;
}
}
编辑:看起来像罪魁祸首this数据注释属性,它(理论上)防止两个列表由具有重叠的值。当验证失败时(无客户端),ViewModel被发送回来,但不会发送OptionsList
,因此在验证失败后永远不会发回。