おはよう!ASP.NET MVCの検証で値の型を指定するにはどうすればいいですか?
私はJSONリクエストからバインドされたモデルは、次のように言ってきました:私はこのアクションに空のJSONオブジェクトを投稿すると{}
(
public ActionResult Submit(MyModel request)
{
if (ModelState.IsValid)
{
..
}
else
{
..
}
}
:
public class MyModel
{
public bool isSomeFeatureEnabled { get; set; }
}
そして、このようなコントローラ)isSomeFeatureEnabled=false
で有効になります。しかし、私はこのフィールドを常に必須の値(true \ false)に設定する必要があるという点で「必須」フィールドを必要とします。
私はこのフィールドをヌル入力にして、[Required]
を置くことができますが、フィールドは実際にはモデルロジックごとにヌル入力可能ではありません。
int
,double
およびDateTime
フィールドと同じ話です。
DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = true
が、それはこのような状況のために働くべきではないでしょうか。
申し訳ありませんが、私の質問はUIに関するものではありません。私の元の質問データがJSONリクエストから来ていると述べたので、空のリクエストは{}です( 'isSomeFeatureEnabled'はまったく指定されていません)。この場合、検証を強制したい。言い換えれば、私のJSONアクションのコンシューマー_は、このフィールドを 'false'でも指定する必要があります。 – artvolk
JSONリクエストから何も得られない場合は、UIのデバッグを試して、値が設定されていない理由を確認しましたか?私はUIがなぜ、何が返されるのかを知ることが重要だと思います。たとえば、UIにバインドされているプロパティはどのようなコントロールですか?それがチェックボックスにバインドされている場合、チェックボックスは適切に初期化されていますか?モデルプロパティは、ビューに送信される前に初期化されていますか?なぜJSONリクエストで何も返ってこない理由がいくつかあります。あなたがUI上でアクセスや制御を全く受けていない場合、nullableが唯一の選択肢かもしれません。 – Nope
これはJSON APIなので、UIはサードパーティアプリケーション/ウェブサイトにあります。私は元の質問でそれを明確に言及する必要があります。 nullableとRequired属性を使用する必要があります。 – artvolk