しばらく髪を引っ張る状況に遭遇したばかりで、その理由を説明するのに途方に暮れています. 結局、私にできる唯一のことは、クライアント側の検証を無効にすることでした。
クライアント側とサーバー側の検証を組み合わせて使用する MVC3 コードを 1 年以上実稼働環境で使用してきました。検証の大部分はサーバー側で行われますが、クライアント側の検証が [Required] フィールドに対してオンになっているため、それらのいずれかが欠落している場合にサーバーへのトリップを行う必要はありません。 -側のものは最初にチェックされます。
今朝、突然、[必須] 属性を持たないフィールドに対してクライアント側の検証エラーが発生しました! なぜこうなった?
クライアント側のエラーをスローしていたフィールドは、一緒にチェックする必要があるプロパティの複雑なセットの一部であるため、サーバー側の検証しかありません。コードのその検証行にブレークポイントを配置しましたが、その属性がまったくないにもかかわらず、クライアント側で必須フィールドとして検証されていたため、到達しませんでした (プロパティには検証属性がまったくありません)。
私はこれを理解していません。クライアントの Web ページのソースを調べたところ、クライアント側の検証用の JavaScript がありました。しかし、モデルのコードのどこにも、そのプロパティが必須であることや、その他の検証属性が必要であることを指定していません。
何を与える?クライアント側の検証コードは、属性が指定されたプロパティに対してのみ生成されると思いましたか?