0

こんにちは、StackOverflow 愛好家の皆さん。

私の古いサイトを Asp.net MVC4 の最新版に更新しようとしています。以前は MVC2 にありましたが、MVC2 では、jquery とクライアント側のものをバックエンドのものからほとんど分離することができました。しかし、MVC4 では、多くの検証機能をモデルに直接結び付けることを望んでいると思います。

しかし、以前はかなりうまく機能していたクライアント側のjquery検証スクリプトがあり、どうすれば再び機能させることができるのか疑問に思っていました。具体的には、ユーザーが 4000 文字を超えて入力した場合に検証されないフィールドがありました。それ以外の場合は必要ありません。これは、MVC2 で以前に機能していたクライアント側のコードです....

Comment: {
    required: function (element) {
    return $(element).val().length > 4000;
    },
    maxlength: 4000
}

検証に合格しなかった場合に表示されるメッセージ...

messages: {
                ...
                Comment: 'Why dont you stop attempting to put in more than 4000 characters?  Thanks...'
            }

MVC 4でそれを行うにはどうすればよいですか? 別のフィールドに何かを表示するには、モデルのフィールドに必要なものを配置する必要があることに気付きました...

    [Required(ErrorMessage = "Please select an Admit Date")]
    public DateTime? AdmitDate { get; set; }

特定の状況でのみ必要になるように要件関数を記述する方法はありますか? 私の言いたいことがわかっているのであれば、私の懸念を切り離すために、クライアント側にとどめておきたいと思います。どんな助けでも大歓迎です。

4

1 に答える 1

1

とを使用[Required][StringLength]て、コメントへの入力を制限できます。

[Required(ErrorMessage = "Please fill in a comment")]
[StringLength(4000, ErrorMessage = "Why dont you stop attempting to put in more than 4000 characters?  Thanks...")]
public string Comment { get; set; }

条件付きの必須制約は、デフォルトのデータ注釈ではカバーされていません。「複雑な」検証を処理するデフォルトの方法はIValidatableObject、モデルにインターフェースを実装することです。

ただし、クライアント側のソリューションを探しているため、この問題を解決できる他のフレームワークを検討できます。たとえば、MVC Foolproof Validation[RequiredIf]は、クライアント側でも機能する属性をサポートしています。

于 2012-09-06T18:17:38.667 に答える