0

検証が機能しない理由を誰かが理解できますか?現在、データ挿入ではクライアント側でキャッチして必要なフィールドメッセージを表示する代わりに、nullを許可しないため、挿入で投稿して失敗します。

http://pastebin.com/4grwD02iを見る

コントローラー
http://pastebin.com/jdbYk8tR

レイアウト
http://pastebin.com/AbQ9xYLG

AppSettings

  <appSettings>
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>

~~ UPDATE ~~

モデル
http://pastebin.com/FJkPgKsX

DALにLinqtoSQL DBMLファイルを使用しているだけなので、プロパティの装飾は行っていません。これを実行してもDBMLを使用できますか?

4

2 に答える 2

1

モデルの状態が有効かどうかを確認するアクションメソッドが表示されません。ページの検証が有効かどうかに関係なく、アクションメソッドが実行されます。すべての検証に合格したかどうかを確認するには、ModelState.IsValidプロパティを確認します。

isModelState.IsValidがfalseの場合は、データストアに対してアクションを実行しないでください。ほとんどの人は以前と同じビューをレンダリングするだけで、ヘルパーはユーザーのデータを入力して検証を表示するという仕事をします。

編集:あなたの投稿を見た後、あなたはおそらくクライアント側の検証を使おうとしているので、投稿が決して起こらないことを期待しているでしょう。検証のこの部分についてはあまり経験がありませんが、使用したい場合でも、完全に信頼するのではなく、常にサーバーに依存して検証(クライアント側の検証)を行う必要があります。より良いユーザーエクスペリエンスのために主にそこにあるべきです)。

System.ComponentModelモデルがどのように見えるかはわかりませんが、名前空間の属性でさまざまなプロパティやフィールドを装飾したと思いますよね?

于 2011-03-30T02:58:42.107 に答える
1

デフォルトのモデルバインダーは、検証を実行するためにデータ注釈に依存しています。したがって、モデルプロパティに検証の実行方法を示す属性がない場合は、常に有効と見なされます(たとえば、デフォルトのモデルバインダーが自動的にマークを付けるときに、無効な形式をDateTimeまたはフィールドにバインドしようとしている場合を除きます)。intモデルの状態は無効です)。

于 2011-03-30T06:27:40.403 に答える