2

MVC 3 でクライアント側の控えめな検証を使用しています。MinPrice というフィールドは、DisplayName 属性と Range 属性のみで装飾されています。しかし、「MinPrice フィールドが必要です」というクライアント側の検証に失敗しています。理由はわかりませんが、必要な属性がどこにも適用されていません。

    [DisplayName("Asking Price")]
    [Range(0, 99999999, ErrorMessage="Invalid number")]
    public int MinPrice { get; set; }

何が原因ですか?

(注: data-val-required="The Minprice field is required" 属性が html ソースでレンダリングされていることがわかります。そのため、新しい目立たないルーチンに関連する何かがそこに配置されています)。他の分野ではこの問題はないようです..

4

2 に答える 2

12

参考までに、これは実際には Linq to SQL とは何の関係もありません。

MinPriceは、定義上、(NULL 可能であるのとは対照的に) NULL 不可であるため、暗黙的な[Required]属性が MinPrice に適用されます。intint?

この動作は、によって実装されます

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes

デフォルトは true です。

Global.asax で false に設定することで、この動作を無効にすることができます。

于 2011-03-06T22:01:10.493 に答える
0

わかりました、私をばかと呼んでください。

しかし、LINQからSQLに「NOTNULL」ステータスを確実に取得していることを発見しました。それは、自分で装飾していなくても、必須フィールドになることを余儀なくされています。これをSQLの必須フィールドにしたので、私自身のせいです。

しかし、それをリッスンするのはばかげているように見えますが、たとえばvarchar(100)がStringLength(100)になるなど、他の検証属性を自動的に取得することはありません。

とにかく、私自身の問題を解決しました!乾杯。

于 2011-02-21T06:42:56.313 に答える