2012-10-30 40 views
0

我在我看来这个下拉菜单(其实我有很多这样的一个循环)MVC为什么这个下拉菜单是强制性的?

@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操作方法中是false。纵观错误列表,其原因就在于

“需要值”

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

任何想法?

感谢,

萨钦

回答

1

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

public List<int?> SelectedAttributeValueIds { get; set; } 
+1

我没有必要的属性,但我会尝试可以为空的想法。 - 谢谢。 –

1

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

如果你真的要离开它作为int可以设置DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypesfalseGlobal.asax我推荐使用的诠释?然而。