ASP.NET MVC3同時にASP.NET MVC3にIClientValidatableインターフェースクライアントとサーバー側の検証を使用しながら話すIClientValidatableインターフェースクライアントとサーバー側の検証を使用しました

同時にASP.NET MVC3で使用IClientValidatableインターフェースクライアントとサーバー側の検証について話します

 
たとえば:レンジ、正規表現、必要な、StringLengthのピア認証大幅にサーバー側の検証を容易にする属性、および我々はまた、カスタム検証は、当社の特定のニーズを満たすために属性をすることができますが、MVC3は、さらに検証の容易性を向上させるために登場しました追加IValidatableObjectとIClientValidatableインタフェース、で具体だけでなく、クライアント側とサーバー側を認証するために暗黙のサポート範囲、正規表現、必要な、StringLengthのその他の財産上の検証を与えます。

。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から」されなければなりません。

これは、クライアント側とサーバー側を達成するであろうし、検証するために、興味を持っている友人は、次試すことができます。

 

 

転載リンク: https://www.cnblogs.com/hyl8218/archive/2011/06/07/2074380.html
 
たとえば:レンジ、正規表現、必要な、StringLengthのピア認証大幅にサーバー側の検証を容易にする属性、および我々はまた、カスタム検証は、当社の特定のニーズを満たすために属性をすることができますが、MVC3は、さらに検証の容易性を向上させるために登場しました追加IValidatableObjectとIClientValidatableインタフェース、で具体だけでなく、クライアント側とサーバー側を認証するために暗黙のサポート範囲、正規表現、必要な、StringLengthのその他の財産上の検証を与えます。

。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から」されなければなりません。

これは、クライアント側とサーバー側を達成するであろうし、検証するために、興味を持っている友人は、次試すことができます。

 

 

おすすめ

転載: www.cnblogs.com/fengzhuqingwan/p/12076912.html