0

在我看来,我有这个下拉列表(实际上我有很多这样的循环)

@Html.DropDownListFor(m => m.SelectedAttributeValueIds[i], Model.AttributeValuesList[Convert.ToInt32(type.Value)], "Select a value")

模型的相关部分是

public IDictionary<int, List<SelectListItem>> AttributeValuesList { get; set; }
public List<int> SelectedAttributeValueIds { get; set; }

上面的下拉列表包含正确的值列表。如果我选择其中一个值并提交,则选择的值会正确发布并正确保存到 SelectedAttributeValueIds 列表中。

现在的问题是,如果我不从这些下拉列表中的一个或多个中选择一个值,我的 ModelState.IsValid 在我的 post action 方法中为 false。查看错误列表,原因是

“需要一个数值”

为什么下拉菜单是强制性的?我希望它们是可选的。

有任何想法吗?

谢谢,

萨钦

4

2 回答 2

1

也许是因为您[Required]在模型中使用了属性,如果没有,您可以将属性类型更改为可为空的:

public List<int?> SelectedAttributeValueIds { get; set; }
于 2012-10-30T09:49:33.677 回答
1

这是因为该SelectedAttributeValueIds属性是具有隐式值的整数列表。如果您希望它没有值,请使用 将类型更改为可为空的 int List<int?>

int如果您真的想保留它,DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes我建议您使用 int false? Global.asax然而。

于 2012-10-30T09:50:39.263 回答