0

私の質問はそれです

クライアント側とサーバー側の両方でmvc3で検証を行いたいです。

サーバー側で検証を使用する方法は知っていますが、クライアント側の検証に問題があります。

かみそりで表示されているテキストボックスが1つあるとします

**Email : @html.Textboxfor(m=>m.Email)**

また

したがって、エラーはこの 無効な電子メールのように表示されます

今、私はクライアント側とサーバー側で電子メールを検証したいと考えています。

クライアント側では、私のowan javascriptファイルを使用したい.on submit form first validate

クライアント側では、その検証が行われた場合、フォームが送信され、サーバー側での検証はチェックされません。ただし、ユーザーがブラウザからスクリプトを無効にすると、サーバー側の検証が実行されます。

4

1 に答える 1

0

サーバー側の検証は常に有効にして、クライアント側の検証よりも強力にする必要があります。モデル間の複雑な相互作用やモデルのプロパティなど、クライアント側で検証するのが難しいものもあります。jQueryただし、バリデータープラグイン(VS MVCプロジェクトテンプレートに付属)を使用してクライアント検証を行うことができます。サーバーに検証属性があり、以下を実装していますIClientValidatable

public class MyValidationAttribute : ValidationAttribute, IClientValidatable
{

    public override bool IsValid(object value)
    {
        if (value == null) {
            return true;
        }
        //Add validation rules
        if (false) {
            return false;
        }
        return true;
    }

    public override string FormatErrorMessage(string name)
    {
        return "Please provide valid values."
    }

    public IEnumerable<System.Web.Mvc.ModelClientValidationRule> GetClientValidationRules(System.Web.Mvc.ModelMetadata metadata, System.Web.Mvc.ControllerContext context)
    {
        return new ModelClientValidationRule[] { new ModelClientValidationRule {
            ErrorMessage = "Please provide valid values.",
            ValidationType = "validationrule"
        } };
    }
}

クライアント側では、検証ルールを追加する必要があります。

jQuery.validator.addMethod("validationrule", function (value, element, param) {
    if (value == "") {
        return false;
    }
    return true;
});
jQuery.validator.unobtrusive.adapters.addBool('validationrule');

これは、jQuery対応ハンドラーの外部に必ず追加してください。この質問に対する受け入れられた回答を参照してください。

于 2013-02-01T06:12:11.507 に答える