モデル内の自分のルールから検証されていないビジネス ルールの検証メソッドを作成しましたが、動作させるのに問題があります。2 つのシナリオ (顧客または販売者の登録) が考えられるため、それらは独自のビューとモデルで個別に処理する必要があります。販売者登録は、基本情報の顧客登録から継承されるため、顧客のすべてのフィールドは販売者にもあります。しかし、私は 2 つの異なるモデルで作業しているため、検証を行っているフィールドが両方とも同じであってもObject
、同じ検証方法を使用する必要がありました。しかし、残念ながら私はそうするのに苦労しています。
[CustomHandleError]
private bool ValidateRegistrationForm (Object registerViewModelObject) {
if (registerViewModelObject is RegisterViewModel)
{
RegisterViewModel registerViewModel =
(RegisterViewModel)registerViewModelObject;
}
else
{
RegisterSellerViewModel registerViewModel =
(RegisterSellerViewModel)registerViewModelObject;
}
if (ModelState.IsValid)
{
string [] names = registerViewModel.Name.Split (
new string [] {" "}, StringSplitOptions.RemoveEmptyEntries);
if (names.Length == 1)
ModelState.AddModelError ("Name", "Fill your full name");
if (CustomerUtilities.IsCpf (registerViewModel.Identity) == false)
ModelState.AddModelError ("Identity", "Invalid CPF value");
if (this.AuthenticatorService.IsExistentUser (registerViewModel.Email))
ModelState.AddModelError ("Email", "Email already registered");
}
}
ご覧のとおりif (ModelState.IsValid)
、IntelliSense の後、現在のコンテキストで registerViewModel が見つかりません。その変数は上記の if AND else 内で定義されているため、定義されていないコードに到達する方法がないため、なぜこれが起こるのだろうか。
これに対する回避策はありますか (新しいメソッドを作成するか、2 つの変数を渡す以外に)?