属性の検証は、できることに完全に適しています。指定した検証属性に加えて、EmailAddress属性を使用して、指定されたプロパティを電子メールアドレスとして検証します。あなたがより複雑なカスタム検証を行うための正規表現の検証属性持っ
[EmailAddress(ErrorMessage = "Invalid Email Address")]
その後:条件付きの検証と、そのような事柄について
[RegularExpression(@"^[a-zA-Z''-'\s]{1,40}$",
ErrorMessage = "Characters are not allowed.")]
を、あなたのコントローラにそのロジックを追加し、ようにModelStateにエラーを追加することができます必要です。
例:
if (MyProperty == "something" && MyOtherProperty != "something")
{
ModelState.AddModelError("", "MyOtherProperty needs to be something")
}
あなたのコントローラロジックに、このような定型検証コードをしたくない場合は、独自のカスタム検証属性を記述することができます。これを行うことで、あなたが考えることができるものをかなり検証することができます。
インターネット上には、そのトピックに関する豊富なリソースがあります。
How to create a custom validation attribute?
How to create Custom Data Annotation Validators
数名に。
私は訂正してうれしく思いますが、これらの属性はHTMLを動的に設定するので、入力には 'required'属性が設定されます。しかし、私はこれまでサーバー側のチェックをしていることを思い出すことはできません。おそらくあなたのコントローラーのデータも消毒する必要がありますが、決して悪いことではありません。 –
@DrewKennedy Aah私は参照してください。コントローラ内に検証を追加するための良いガイドがありますか? – Nyprez
ガイドではありませんが、 'ModelState'を使って検証チェックを実行したり、' AddModelError'を使って問題を定義したり、プロパティを使ってエラーメッセージを定義することができます。 [これは良い例です](http://stackoverflow.com/a/21911236/4204026)。 –