1. ホーム
  2. c#

[解決済み] 特定の状況下で Required バリデーション属性を無効にする

2022-05-24 01:06:32

質問

あるコントローラのアクションにおいて、Required バリデーション属性を無効にすることは可能でしょうか? というのも、私の編集フォームの1つでは、ユーザーが以前に指定したフィールドの値を入力する必要はありません。しかし、値が入力されたときに、値をハッシュ化するなどの特別なロジックを使用してモデルを更新するロジックを実装しています。

この問題を回避する方法について、何か提案はありますか?

編集中です。

また、値を入力せずにフォームを送信することを許可しないので、はいクライアントの検証はここでも問題になっています。

どのように解決するのですか?

この問題は、ビューモデルを使用することで簡単に解決することができます。ビューモデルは、与えられたビューのニーズに合わせて特別に作られたクラスです。ですから、例えばあなたの場合、次のようなビューモデルを持つことができます。

public UpdateViewView
{
    [Required]
    public string Id { get; set; }

    ... some other properties
}

public class InsertViewModel
{
    public string Id { get; set; }

    ... some other properties
}

で、それぞれ対応するコントローラのアクションで使用されます。

[HttpPost]
public ActionResult Update(UpdateViewView model)
{
    ...
}

[HttpPost]
public ActionResult Insert(InsertViewModel model)
{
    ...
}