同時にASP.NET MVC3で使用IClientValidatableインターフェースクライアントとサーバー側の検証について話します
。IValidatableObjectインタフェースは、オンラインの情報をたくさん持っているし、今日の私は、このインターフェイスをIClientValidatableを導入し、IClientValidatableインタフェースが可能にASP NET MVCの調査結果のサポートクライアント側の検証を実行時に、このインタフェースは、異なる認証フレームワークの統合をサポートするために使用されます-抜粋:ASP.NET MVC3の概要。
ここでは、IClientValidatableは、クライアント側とサーバー側の検証実装するためのインタフェースを使用する方法を見て。
まず、我々はNoIsAttribute.csから検証属性を定義し、次のように、主な役割は、指定したユーザー名を含めることはできません文字列属性を確認することです。
公共の密封されたクラスNoIsAttribute:ValidationAttribute { 公共の文字列とInputString {取得します。セットする; } 公共NoIsAttribute() { ErrorMessage = "検証失敗"; } 公共オーバーライドブールIsValid関数(オブジェクトの値) { (値== null)の場合 trueを返します。 ストリングinputStringから=(文字列)値。 もし(inputString.Contains(とInputString)) { falseを返します。 } trueを返します。 } }
のは、エンティティクラスのLogon.csを作成してみましょう
パブリッククラスログオン { [表示名( "年齢")] [範囲(6,100)] 公共int型の年齢{取得します。セットする; } [表示名( "姓名")] 【のNOI(とInputString =「Bujun盛」にErrorMessage =「ユーザ名Bujun盛を含めることはできません」)] パブリック文字列名前{取得します。セットする; } }
Logon.cs後、私たちは、あなたが入力した場合、ログインプロセス中にユーザーが含まれているので、「ボーJunshengを、」それは検証されませんが、ユーザーがサーバーにデータを提出することができるときに、プロパティだけで、NOISプロパティのNameプロパティを検証するために使用しますデータの検証、(クライアント側の検証範囲のサポートは、その年齢が要件を満たしていない場合、ユーザーは、年齢に入ったときに、クライアントを認証することですasp.net mvc3デフォルトので年齢は、プロパティの適用を検証する範囲は属性。)、我々はNoIsAttribute.csコードを変換する必要がありますので、クライアント側で確認することができますNOISプロパティを検証するために、我々は、IClientValidatable NoIsAttribute.csインタフェースを実装する必要があります。
公共のシールクラスNoIsAttribute:ValidationAttribute、IClientValidatable { 公共の文字列とInputString {取得します。セットする; } 公共NoIsAttribute() { ErrorMessage = "検証失敗"; } 公共のIEnumerable <ModelClientValidationRule> GetClientValidationRules(ModelMetadataメタデータ、ControllerContextコンテキスト) { ModelClientValidationRuleルール=新しいModelClientValidationRule { ValidationType = "NOIS"、 ErrorMessage = FormatErrorMessage(metadata.GetDisplayName()) }。 rule.ValidationParameters =とInputString [ "inputStringから"]。 リターンルールを生成します。 } 公共オーバーライドブールIsValid関数(オブジェクトの値) { (値== null)の場合 trueを返します。 ストリングinputStringから=(文字列)値。 もし(inputString.Contains(とInputString)) { falseを返します。 } trueを返します。 } }
IClientValidatableインタフェースは、限り、我々は、このメソッドを実装することができますように、この方法は属性を表すメタデータのメタデータを検証するために2つのパラメータを含み、コンテキストはコントローラの送信要求コンテキストを示し、そしてそれは、彼が唯一のGetClientValidationRules()メソッドを持っている、非常に簡単ですModelClientValidationRuleは、コレクションを返します。
のは、このコードを見てみましょう:
ModelClientValidationRuleルール=新しいModelClientValidationRule { ValidationType = "NOIS"、 ErrorMessage = FormatErrorMessage(metadata.GetDisplayName()) }。
このコードは、ValidationTypeは、認証の種類でその2つのプロパティを、ModelClientValidationRuleオブジェクトを作成して割り当てることで、ErrorMessageの間違った情報(クライアントコードは、プロパティを呼び出す必要があります)。
私たちは、このコードの後、次を見てみましょう:
rule.ValidationParameters =とInputString [ "inputStringから"]。
このコードの意味は、その値がとInputStringで、「inputStringから」検証属性を追加することですValidationParametersはIDictionaryを<文字列、オブジェクト>辞書であることに注意することが、最も重要なことは、いずれかを含めることはできません、キーは小文字でなければなりませんValidationParametersです大文字、それ以外の場合は心に留めておくようにしてください、実行中のエラーになります。
IClientValidatable.cs完了した後、我々はまた、同時に、クライアントとサーバー側の検証を達成するために、書き込み、クライアント側のコードに必要です。
我々は、web.configファイルで見ることができるように、デフォルトasp.net mvc3することにより、クライアント側の検証と検証の皮をオープンしました
<のappSettings> <キー= "ClientValidationEnabled" 値= "true" を追加/>を <キー= "UnobtrusiveJavaScriptEnabled" 値= "true" を追加/>を </のappSettings>
あなたは以下の図のコードビューのファイルが表示されますので、デフォルトでは、クライアント認証のためのjQueryの検証プラグインを使用してasp.net mvc3だから
<スクリプトSRC = "@ Url.Content(" 〜/スクリプト/ jquery.validate.min.js ")" タイプ= "テキスト/ javascriptの"> </ SCRIPT> <スクリプトSRC = "@ Url.Content(" 〜/スクリプト/ jquery.validate.unobtrusive.min.js ")" タイプ= "テキスト/ javascriptの"> </ SCRIPT>
ここでは、検証の検証ルールにカスタムプラグインを記述する必要があり、かつ控えめに追加したルールは、コードは以下の通りであります:
ます。<script type = "text / javascriptの"> $ .validator.addMethod( "NOIS"、関数(値、要素、PARAM){ IF(値== false)を{ trueを返します。 } もし(value.indexOf(パラメータ)!= -1){ falseを返します。 } そうしないと { trueを返します。 } }); $ .validator.unobtrusive.adapters.addSingleVal( "NOIS"、 "inputStringから"); </ SCRIPT>
この関数は、最初のパラメータの値が値IClientValidatable.cs ValidationTypeと一致していなければならないaddMethod、「NOIS」でなければならない、$ .validator.unobtrusive.adapters.addSingleVal(「NOIS」があることに留意すべき)「inputStringから」;文の第2のパラメータ値と同一の鍵ValidationParametersの値は、「inputStringから」されなければなりません。
これは、クライアント側とサーバー側を達成するであろうし、検証するために、興味を持っている友人は、次試すことができます。
。IValidatableObjectインタフェースは、オンラインの情報をたくさん持っているし、今日の私は、このインターフェイスをIClientValidatableを導入し、IClientValidatableインタフェースが可能にASP NET MVCの調査結果のサポートクライアント側の検証を実行時に、このインタフェースは、異なる認証フレームワークの統合をサポートするために使用されます-抜粋:ASP.NET MVC3の概要。
ここでは、IClientValidatableは、クライアント側とサーバー側の検証実装するためのインタフェースを使用する方法を見て。
まず、我々はNoIsAttribute.csから検証属性を定義し、次のように、主な役割は、指定したユーザー名を含めることはできません文字列属性を確認することです。
公共の密封されたクラスNoIsAttribute:ValidationAttribute { 公共の文字列とInputString {取得します。セットする; } 公共NoIsAttribute() { ErrorMessage = "検証失敗"; } 公共オーバーライドブールIsValid関数(オブジェクトの値) { (値== null)の場合 trueを返します。 ストリングinputStringから=(文字列)値。 もし(inputString.Contains(とInputString)) { falseを返します。 } trueを返します。 } }
のは、エンティティクラスのLogon.csを作成してみましょう
パブリッククラスログオン { [表示名( "年齢")] [範囲(6,100)] 公共int型の年齢{取得します。セットする; } [表示名( "姓名")] 【のNOI(とInputString =「Bujun盛」にErrorMessage =「ユーザ名Bujun盛を含めることはできません」)] パブリック文字列名前{取得します。セットする; } }
Logon.cs後、私たちは、あなたが入力した場合、ログインプロセス中にユーザーが含まれているので、「ボーJunshengを、」それは検証されませんが、ユーザーがサーバーにデータを提出することができるときに、プロパティだけで、NOISプロパティのNameプロパティを検証するために使用しますデータの検証、(クライアント側の検証範囲のサポートは、その年齢が要件を満たしていない場合、ユーザーは、年齢に入ったときに、クライアントを認証することですasp.net mvc3デフォルトので年齢は、プロパティの適用を検証する範囲は属性。)、我々はNoIsAttribute.csコードを変換する必要がありますので、クライアント側で確認することができますNOISプロパティを検証するために、我々は、IClientValidatable NoIsAttribute.csインタフェースを実装する必要があります。
公共のシールクラスNoIsAttribute:ValidationAttribute、IClientValidatable { 公共の文字列とInputString {取得します。セットする; } 公共NoIsAttribute() { ErrorMessage = "検証失敗"; } 公共のIEnumerable <ModelClientValidationRule> GetClientValidationRules(ModelMetadataメタデータ、ControllerContextコンテキスト) { ModelClientValidationRuleルール=新しいModelClientValidationRule { ValidationType = "NOIS"、 ErrorMessage = FormatErrorMessage(metadata.GetDisplayName()) }。 rule.ValidationParameters =とInputString [ "inputStringから"]。 リターンルールを生成します。 } 公共オーバーライドブールIsValid関数(オブジェクトの値) { (値== null)の場合 trueを返します。 ストリングinputStringから=(文字列)値。 もし(inputString.Contains(とInputString)) { falseを返します。 } trueを返します。 } }
IClientValidatableインタフェースは、限り、我々は、このメソッドを実装することができますように、この方法は属性を表すメタデータのメタデータを検証するために2つのパラメータを含み、コンテキストはコントローラの送信要求コンテキストを示し、そしてそれは、彼が唯一のGetClientValidationRules()メソッドを持っている、非常に簡単ですModelClientValidationRuleは、コレクションを返します。
のは、このコードを見てみましょう:
ModelClientValidationRuleルール=新しいModelClientValidationRule { ValidationType = "NOIS"、 ErrorMessage = FormatErrorMessage(metadata.GetDisplayName()) }。
このコードは、ValidationTypeは、認証の種類でその2つのプロパティを、ModelClientValidationRuleオブジェクトを作成して割り当てることで、ErrorMessageの間違った情報(クライアントコードは、プロパティを呼び出す必要があります)。
私たちは、このコードの後、次を見てみましょう:
rule.ValidationParameters =とInputString [ "inputStringから"]。
このコードの意味は、その値がとInputStringで、「inputStringから」検証属性を追加することですValidationParametersはIDictionaryを<文字列、オブジェクト>辞書であることに注意することが、最も重要なことは、いずれかを含めることはできません、キーは小文字でなければなりませんValidationParametersです大文字、それ以外の場合は心に留めておくようにしてください、実行中のエラーになります。
IClientValidatable.cs完了した後、我々はまた、同時に、クライアントとサーバー側の検証を達成するために、書き込み、クライアント側のコードに必要です。
我々は、web.configファイルで見ることができるように、デフォルトasp.net mvc3することにより、クライアント側の検証と検証の皮をオープンしました
<のappSettings> <キー= "ClientValidationEnabled" 値= "true" を追加/>を <キー= "UnobtrusiveJavaScriptEnabled" 値= "true" を追加/>を </のappSettings>
あなたは以下の図のコードビューのファイルが表示されますので、デフォルトでは、クライアント認証のためのjQueryの検証プラグインを使用してasp.net mvc3だから
<スクリプトSRC = "@ Url.Content(" 〜/スクリプト/ jquery.validate.min.js ")" タイプ= "テキスト/ javascriptの"> </ SCRIPT> <スクリプトSRC = "@ Url.Content(" 〜/スクリプト/ jquery.validate.unobtrusive.min.js ")" タイプ= "テキスト/ javascriptの"> </ SCRIPT>
ここでは、検証の検証ルールにカスタムプラグインを記述する必要があり、かつ控えめに追加したルールは、コードは以下の通りであります:
ます。<script type = "text / javascriptの"> $ .validator.addMethod( "NOIS"、関数(値、要素、PARAM){ IF(値== false)を{ trueを返します。 } もし(value.indexOf(パラメータ)!= -1){ falseを返します。 } そうしないと { trueを返します。 } }); $ .validator.unobtrusive.adapters.addSingleVal( "NOIS"、 "inputStringから"); </ SCRIPT>
この関数は、最初のパラメータの値が値IClientValidatable.cs ValidationTypeと一致していなければならないaddMethod、「NOIS」でなければならない、$ .validator.unobtrusive.adapters.addSingleVal(「NOIS」があることに留意すべき)「inputStringから」;文の第2のパラメータ値と同一の鍵ValidationParametersの値は、「inputStringから」されなければなりません。
これは、クライアント側とサーバー側を達成するであろうし、検証するために、興味を持っている友人は、次試すことができます。