1

一部のデータ型の検証に問題があります。文字列以外にもint、short、DateTimeなどがあります。ビューモデルクラスに次のプロパティがあるとします

public int? LineNumber { get; set; }

間違った値を入力すると、「値 'balblabl' は LineNumber に対して有効ではありません」という mvc エラーが発生します。

しかし、「値が正しくありません」のようなものだけが必要な場合はどうすればよいでしょうか? または、他の言語を使用したい場合はどうすればよいですか? 私はそれを行う方法がわかりません(もちろん、intの代わりに文字列を使用できますが、それは面倒な回避策です)

私はすでに dataannotationsextensions [DataAnnotationsExtensions.Integer(ErrorMessage = "Please enter a valid number.")]属性を試しました。機能していません。バインダーの変換後、すべての場合に誤った値で null 値を取得するため、カスタム検証属性を使用できません。私は自分自身の検証を行うことができません。独自のバインダーを作成することはできますが、冗談のようです。本当に、カスタム検証メッセージは必要なものの1つであり、asp.net mvcにはそれを行う簡単な方法があるとは信じられません。

4

2 に答える 2

1

私の意見では、カスタム エラー メッセージを追加して管理する簡単な方法をもう 1 つ追加したいと思います。FluentValidation NuGet パッケージ を使用します。
それはかなり簡単にmvcに接続しますここを見てください

モデルに多数のルールを簡単に指定し、リソース ファイルを例として使用できるカスタム エラー メッセージを表示できます。

public class CreateProductCommandValidator : AbstractValidator<CreateProductCommand>
    {
        public CreateAgendaPointCommandValidator()
        {
            RuleFor(cmd => cmd.price)
                .NotEmpty()
                .WithMessage(Translations.CreateProduct_Price)

        }
    }
}

ドキュメンテーション: FluentValidationDocumentation

于 2012-12-31T09:42:24.957 に答える