1)どのように検証のための私のサービスを利用するには?
あなたはMust
ルール使用することができます
RuleFor(x => x.Email)
.NotEmpty()
.WithMessage("Email is required.")
.EmailAddress()
.WithMessage("Invalid email format.")
.Must(userService.IsEmailUnique)
.WithMessage("Email already taken");
2)別のエラーメッセージで複数の正規表現ルールを登録することが可能ですか?それはクライアント側で動作しますか? (そのための独自の検証ロジックを作成する方法、ありませんか?)
いいえ、あなたはありませんならば、どのようにそれ用のカスタム検証ロジックを作成するには、プロパティごとに
を一つだけ検証タイプを持つことができますか?
あなたはしなければならないルールを使用することができます。
RuleFor(x => x.Password)
.Must(password => SomeMethodContainingCustomLogicThatMustReturnBoolean(password))
.WithMessage("Sorry password didn't satisfy the custom logic");
3)、サーバー側の検証は、アクションメソッドでモデルのパスの前に自動的に動作しますし、ModelState.IsValidプロパティを呼び出すのに十分ですそれとももっと何かをする必要がありますか?
はい、絶対に。
[HttpPost]
public ActionResult Register(RegisterModel model)
{
if (!ModelState.IsValid)
{
// validation failed => redisplay the view so that the user
// can fix his errors
return View(model);
}
// at this stage the model is valid => process it
...
return RedirectToAction("Success");
}
UPDATE:あなたのコントローラのアクションは、このようになります。
4)いくつかのプロパティを検証するときに、モデルのすべてのプロパティにアクセスすることが可能ですか? (例えば、私はときレジスタパスワードとConfirmPasswordを比較したい)
はい、もちろん:
RuleFor(x => x.ConfirmPassword)
.Equal(x => x.Password)
.WithMessage("Passwords do not match");
約2:私はmuを持っています複数の正規表現と各正規表現にはそれぞれ独自のエラーメッセージがあります。出来ますか? –
@EvgenyLevin、私はすでにこれを私の答えで取り上げました。「いいえ、プロパティごとに1つのみ検証タイプを持つことができます。したがって、2つの可能性があります。すべてを検証できる単一の正規表現を用意するか、カスタムロジックを記述するためにMustルールを使用します。 –
と私は1つ以上のカスタムルールのためのルールを書くことができません?アップデートを見てください(ポイント4)。 –