0

2 つの類似したビューで同じモデルを使用しています。1 つはユーザー プロファイル ビューで、もう 1 つは同じページの管理者ビューです。管理者のビューでは、ユーザー プロファイル ビューにはないいくつかのフラグが使用されます。この問題は、null 非許容型を使用するときに発生します。すなわち。モデルからブール値を使用しない場合、「送信」後にモデルがコントローラーに戻されると、そのブール値はデフォルトで null ではなく false になり、モデルを永続化すると偽のデータになります。

2 つの非常によく似たモデルがあることを除けば、これを処理する MVC 3 の適切な方法は何ですか?

ありがとう!

4

3 に答える 3

1

私が理解しているように、フラグがフォームにあったものをどのように認識できるかを知りたいと思っています。

チェックボックスの存在を示すすべてのチェックボックスの隠し要素をページに追加します。

2 つの非常によく似たモデルがあることを除けば、これを処理する MVC 3 の適切な方法は何ですか?

部分ビューを作成する必要があります。

追加

他の提案に関して、最善かつ安全な方法は、(受信アクションで) 現在のユーザーが変更できるフラグ (彼の権利) を確認し、それをベースで変更することです。

于 2011-09-21T05:52:06.633 に答える
0

過剰投稿のリスクを認識しておく必要があります。admin-view には、一連のチェックボックスを介して profile ビューにないロールまたは特権を付与する何らかの方法があるようです。賢明なユーザーは、自分が持つべきではない役割や特権を自分自身に与えるために、どのフィールドを設定すればよいかを理解できる可能性があります。両方のビューからのフォーム データを処理する 1 つのアクションがある場合、これが発生したかどうかを判断する方法はありません。

最も簡単な解決策 (複数のビュー モデルを作成したくない場合) は、フォームを別のコントローラー アクションにポストすることです。管理者レベルのアクションはブール値を使用してモデルを更新しますが、他のアクションは使用しません。これにより、過剰転記のリスクが防止されます。ビューに非表示のフィールドを追加しても、セキュリティはまったく得られません。ブラウザから取得したデータを信頼しないでください。一度もない。

于 2011-09-21T07:34:42.643 に答える
0

私が正しいと理解した場合、モデルにnull可能なboolを実装し、それに応じてそれらを処理する必要があります。

同様の質問については、この回答をご覧ください。役立つリンクがいくつか見つかります

于 2011-09-21T06:33:28.147 に答える