6

他の 3 つの ViewModel で構成される ViewModel があるとしましょう。1 つは項目のリストを含み、もう 1 つは [Required] 属性を持つクラスのインスタンスを含み、次に他の項目の別のリストを含みます。

ユーザーが 2 つのリストのいずれかの項目のいずれかを選択した場合、2 番目のオブジェクトの [Required] 属性によって ModelState が無効になることは望ましくありません。 [必須] 属性の項目をフォームに入力する必要があります。

どうすればこの問題を解決できますか?

4

1 に答える 1

5

1 つのオプションは、ModelState.Remove("KeyName") を使用して "問題のある" 検証を削除することです。私はまったく同じシナリオを持っており、以下を実装しました:

var MyModel = _someService.GetModelById(id);
TryUpdateModel(MyModel);
ModelState.Remove("MyModel.OffendingField");
if (ModelState.IsValid)
{
    ...
}

ただし、これがコードの他の領域に影響を与えないようにすることが重要です。

于 2011-04-08T08:02:23.057 に答える