オブジェクトを含むviewModelがあります。そのオブジェクトのカスタムエディタテンプレートを定義しました。これにより、そのオブジェクトの各子を編集できます。子の値はサーバー側では必要ありません(したがって、必須の注釈はありません)が、ユーザーがこの特定の入力に到達した場合は、必須である必要があります。
POSTメソッドでこれらの子オブジェクト(viewModel内)の値を検査し、それらがnullの場合にビューにエラーを返す方法はありますか?
私はRazorを使用しています。
オブジェクトを含むviewModelがあります。そのオブジェクトのカスタムエディタテンプレートを定義しました。これにより、そのオブジェクトの各子を編集できます。子の値はサーバー側では必要ありません(したがって、必須の注釈はありません)が、ユーザーがこの特定の入力に到達した場合は、必須である必要があります。
POSTメソッドでこれらの子オブジェクト(viewModel内)の値を検査し、それらがnullの場合にビューにエラーを返す方法はありますか?
私はRazorを使用しています。
サーバー側では、アクションでクラスの子オブジェクトを確認できます。
[HttpPost]
public ActionResult Edit(MyClass myClass)
{
if (myClass.Children.Any(child => child == null))
{
foreach(var child in myClass.Children
.Where(child => child == null)
.Select((item, index) => new { Item = item, Index = index))
{
ModelState.AddModelError(
string.Format("Children[{0}]", child.Index),
"Must be required");
}
return this.View("...");
}
}
あなたができることは、(そのフィールドの変更時に)ユーザー入力をチェックする関数を書くことです
ユーザーがこの特定の入力に到達した場合
ユーザーがその特定の入力に到達したら、jQuery を使用して@class = "required"
HTML 属性をオブジェクトに追加します。その瞬間からrequired
ここを見てください: これは、いくつかの条件に基づく必須フィールドの jQuery バリデーターです。これはまさにあなたが求めているものだと思います
編集
もう 1 つのオプションは、AJAX を使用してサーバーに戻り、探しているものを確認することです。例はこちら
これが理にかなっていて、あなたの助けになることを願っています.