入力された URL に基づいて 2 つのテキスト ボックスを検証しようとしています。テキスト ボックスは、役職と軍の階級用です。
一般的に、私が作成したルートのほとんどで、役職のテキスト ボックスが必要になるのは、現在 3 つの URL だけであり、代わりに軍の階級が必要です。同様のプロジェクトで、ビュー モデルに追加された MVC Foolproof Validation を使用して RequiredIf アノテーションを追加しました。アノテーションを使用してみましたが、ドメイン モデル プロジェクトから検証しているため、Foolproof Validation が機能しません。
現在、次のコードを使用して、ドメイン モデルにハンドラー クラスとしてカスタム検証を部分的に実装しています。
if (paymentDetailsForm.UseRankInsteadOfJobTitle)
{
if (paymentDetailsForm.Rank == null)
{
yield return new ValidationResult(Resources.JobRankRequired);
}
}
基本的に、入力された URL に応じて true または false に設定される UseRankInsteadOfJobTitle というブール値を作成しました。
この値を true または false に設定するには、コントローラーで次のコードを使用しました。
if ((programme.Code == "AMAC") || (programme.Code == "AMACD") || (programme.Code == "AMACR"))
{
ViewData["UseRankInsteadOfJobTitle"] = true;
}
else
{
ViewData["UseRankInsteadOfJobTitle"] = false;
}
次に、ビューに隠しフィールドを作成しました。
@Html.Hidden("UseRankInsteadOfJobTitle", @ViewData["UseRankInsteadOfJobTitle"])
次に、次の HTML が生成されます。
偽の値の場合
<input data-val="true" data-val-required="The Boolean field is required." id="UseRankInsteadOfJobTitle" name="UseRankInsteadOfJobTitle" type="hidden" value="False" />
真の値
<input data-val="true" data-val-required="The Boolean field is required." id="UseRankInsteadOfJobTitle" name="UseRankInsteadOfJobTitle" type="hidden" value="True" />
現在、役職または軍階級の検証メッセージは表示されていません。USERankInsteadOfJobTitle の値が true か false かを確認する方法が必要です。
formCollection クラスを使用して隠しフィールドの値を取得しようとしましたが、これまでのところうまくいきませんでした。
これを行う方法や、これらのテキストボックスを検証するより良い方法についてのアドバイスをいただければ幸いです。