1

次のようにnull許容のintフィールドがあります。明らかに、これは必須フィールドではありません。

[DisplayName("Previous Job No:")]
public int? previousJobId { get; set; }

現時点では、ユーザー入力が無効な場合、デフォルトのエラーメッセージが表示されますThe field Previous Job No: must be a number.

データ注釈を使用してこのデフォルトのエラーメッセージを変更するにはどうすればよいですか?

ありがとう !

4

2 に答える 2

3

あなたがした場合はどうなりますか?

[DataType(DataType.Int32, ErrorMessage = "Custom Error Msg")]
public int? previousJobId { get; set; }

残念ながら、私はこのATMをテストすることができません。

2回目の試行:

これはきれいではありませんが、カスタムデータ注釈を作成する必要がなくなります。これにより、カスタムjQuery検証を作成する必要がなくなります。私はこれをテストすることができました、そしてそれは私のために働きました。しかし、あなたがそのスタイルが好きかどうかはあなた次第です。

[DisplayName("Previous Job No:")]
[RegularExpression("^[0-9]+$", ErrorMessage = "Custom Error Msg")]
public string previousJobId { get; set; }
private int? _previousJobId2;
public int? previousJobId2
{
    get
    {
        if (previousJobId == null)
        {
            return null;
        }
        else
        {
            return Int32.Parse(previousJobId);
        }
    }
    set
    {
        _previousJobId2 = value;
    }
}

次のコマンドを使用して、コントローラーでテストできます。

[HttpPost]
public ActionResult Index(HomeViewModel home)
{
    if (ModelState.IsValid)
    {
        int? temp = home.previousJobId2;
    }
    return View(home);
}

ビューで文字列を参照します

@Html.LabelFor(model =>model.previousJobId)
于 2012-06-07T14:05:53.673 に答える
0

試す

[Range(1, 1000, ErrorMessage = "Enter a integer value")]
 public int? previousJobId { get; set; }

または、可能であれば外部プロジェクトを使用しますhttp://dataannotationsextensions.org/Integer/Create

実装方法は次のとおりです:https ://github.com/srkirkland/DataAnnotationsExtensions/blob/master/DataAnnotationsExtensions/IntegerAttribute.cs

于 2012-06-07T14:10:43.437 に答える