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; }

上記のドロップダウンには、正しい値のリストが含まれています。値の 1 つを選択して送信すると、選択した値が正しく投稿され、SelectedAttributeValueIds リストに正しく保存されます。

問題は、これらのドロップダウンの 1 つ以上から値を選択しないと、ポスト アクション メソッドで ModelState.IsValid が false になることです。エラーリストを見ると、その理由は

"値が必要とされます"

ドロップダウンが必須なのはなぜですか? オプションにしてほしいです。

何か案は?

ありがとう、

サチン

4

2 に答える 2

1

モデルで属性を使用[Required]している可能性があります。そうでない場合は、プロパティ タイプを null 許容型に変更できます。

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

これは、SelectedAttributeValueIdsプロパティが暗黙的な値を持つ int のリストであるためです。値を持たないようにする場合は、 を使用して型を null 許容の int に変更しList<int?>ます。

本当にそのままにしておきたい場合は、 int を使用することをお勧めしintますDataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypesfalse? Global.asaxでも。

于 2012-10-30T09:50:39.263 に答える