1

実際の質問をする前に、これは私たちの顧客がそれについて歯と爪で戦っているという要件であるため、この種の回答を達成するためのより良い方法があることを知っていますが.これを行うより良い方法は、この場合には役に立ちません。

次の定義を持つビューモデルがあります。

public class MyVm
{
   [Required]
   public string Email{get;set;]

   [Required]
   [Compare("Email")]
   public string EmailConfirmation{get;set;
}

これをテストするとき、Email フィールドに値を入力し、EmailConfirmation フィールドに値を入力しないと、fields-do-not-match エラーが発生します。これはまったく問題ありませんが、顧客は絶対に「確認フィールドが必要です」と表示されることを望んでいます。空の場合、および両方のフィールドにデータがあり、かつそれらが一致しない場合にのみ、「フィールドが一致しません」というエラーが表示されます。

注釈でこれを達成する方法はありますか?

: MVC 3 を使用しています。

ご協力いただきありがとうございます。

4

2 に答える 2

0

たぶん、独自の属性を書くことができます。このようなもの:

 [AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
public class CompareAndValidateAttribute : CompareAttribute
{
    public override bool IsValid(object value)
    {
        return base.IsValid(value) && !string.IsNullOrEmpty((string)value);
    }
}
于 2012-04-16T18:59:32.787 に答える
0

このシナリオを処理するために、独自のカスタム検証属性をいつでも作成できます。これは、カスタム属性を使用してカスタム検証を処理する例を示す適切な記事です。

于 2012-04-16T18:55:46.967 に答える