2

モデルを作成するときにASP.NET MVCを使用し、CRUD操作のモデルに基づいたコントローラを使用すると、CRUDビューが生成されます。特定のフィールドを要求するためにFluent APIを使用するコードをいくつか追加しましたが、何らかの理由でModelState.IsValidがこれらのフィールドが完了していなくても渡します。これが通過するかどうかを決めるのは何ですか?私はそれがあなたのモデルのプロパティのデータ型と、必要なものや最大長さなどの他のものに基づいていると思っていました....多少の質問... ModelState.IsValidとグループ化されたCheckBoxの値

また、私は手動でデータベースからカテゴリのリストを取得し、各ビューはビュー内にあります。これは、多数の関係が存在するプロジェクトモデルのナビゲーションプロパティです。コントローラに作成します(Projectプロジェクト)メソッドでチェック値のグループを取得するために私が使用します。

var selected = Request["categories"].Split(','); 

は値がチェックされていない場合、これはしかし、オブジェクトエラーのインスタンスに設定されていない古典的なオブジェクト参照をスローします。だから私が知りたいのは、一度検出された何か他のことを行うことができるように、これに値がないことをどうやって判断できるのでしょうか?

+1

を使用すると、2つの別々の問題が発生した場合、次の2つの別々の質問を持っている必要があります。 –

+0

よろしくお願いします。 –

答えて

1

私は特定のフィールドを必要とするように流暢APIを使用していくつかのコードを追加しましたが、ModelState.IsValidは、これらのフィールドが 完了していない場合であっても合格 何らかの理由で。

ASP.NET MVCは、Entity FrameworkのFluent APIについて何も知らず、この構成を評価しません。あなただけのMVCが認識されるデータ注釈を使用することができます。

[Required] 
public string SomeProperty { get; set; } 

...どのように私は私が一度に検出他 何かをすることができますので、これは任意の値を持っていないことを確認できますか?

ない、私はそれを正しく理解し、私が言うと思いますかどうかわから:

var categories = Request["categories"]; 
if (categories != null) 
{ 
    var selected = categories.Split(','); 
    // ... 
} 
else 
{ 
    // do something else 
} 
+0

Hmmm、最初の部分は...だから、これはデータアノテーションとしてモデルにレプリケートする必要がありますか?ちょうど冗長に思える私はFluent APIのすべてをデータアノテーションで行うことができると思っていましたが、それ以上はできました。 2番目の部分が意味をなさないので、試してみます。助けてくれてありがとう。 –

+1

@ user1066133:はい、あなたは注釈で行うことができるFluent APIのすべてを行うことができます。しかし、これはEntity Framework自体の場合にすぎません。 EFは両方を評価しますが、ASP.NET MVCは評価しません。この悪名高い 'System.ComponentModel.DataAnnotations'名前空間は非常に混乱します。たとえば、 '[Required]'属性は二重目的を持っています。 MVC(クライアント検証Javascriptコードの発行とサーバー側の検証)とEFによってデータベーススキーマを定義します。しかし、これはまったく異なるコードであり、属性はEFの前にMVCに存在していました。 – Slauma

+0

さて、私はちょうどいくつかのデータの注釈といくつかの流暢なAPIを置く必要があると思いますか?これは悪い練習ですか、それとも普通の練習ですか? –

関連する問題