特定のビューのこのパラメータのプロパティを変更することは可能ですか?
いいえ、属性はコンパイル時にアセンブリに焼き付けられます。
これを行う正しい方法は、ビュー モデルを使用することです。
public class CreateViewModel
{
[DisplayName("Name")]
public string Name { get; set; }
}
public class EditViewModel
{
[Required(AllowEmptyStrings = false, ErrorMessage = "No null")]
[DisplayName("Name")]
public string Name { get; set; }
}
2 つのビューからフォームを送信するときに呼び出されるそれぞれのコントローラー アクションは、ビュー モデルで動作します。
public ActionResult Create(CreateViewModel model)
{
... the name will not be required here
if (ModelState.IsValid)
{
}
}
public ActionResult Edit(EditViewModel model)
{
... the name will be required here
if (ModelState.IsValid)
{
}
}
別のアプローチには、カスタム モデル バインダーまたは実装IValidatableObject
インターフェイスが含まれ、現在のアクションに基づいて何らかの動的検証を行います。一言で言えば、あなたは深淵に向かっています。個人的には、これは私が台無しにするものではありませんが、私の推奨する解決策が気に入らない場合は、その方向を自由に探索してください。