我为未从模型中的规则验证的业务规则创建了一个验证方法,但我在使其工作时遇到了问题。由于存在两种可能的场景(客户或卖家注册),因此需要在各自的视图和模型中分别对待。卖家注册继承了客户注册的基本信息,因此客户中的所有字段也在卖家中。但是由于我正在使用 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 和 else 中定义的,所以如果没有定义它就无法访问该代码。
是否有任何解决方法(除了创建新方法或传递 2 个变量)?