特定の状況下で必須の検証属性を無効にする 質問する

特定の状況下で必須の検証属性を無効にする 質問する

特定のコントローラー アクションで、必須検証属性を無効にできるかどうか疑問に思っています。編集フォームの 1 つで、ユーザーが以前に指定したフィールドの値を入力する必要がないため、疑問に思っています。ただし、値を入力すると、値のハッシュ化など、モデルを更新するための特別なロジックを使用するロジックを実装しています。

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

編集:
はい、クライアント検証もここで問題になります。値を入力せずにフォームを送信することはできないためです。

ベストアンサー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)
{
    ...
}

おすすめ記事