2017-02-03 2 views
0

ポートフォリオ用のコントローラがあり、使用しているビューモデルはDisplayItemと呼ばれています。モデルの機能は関係ありませんが、モデルは自分のポートフォリオの一部に関するデータを表します。ASP MVC - モデルデータを渡すか、データベースから取得します

このコントローラーのインデックスページでは、データベースから必要な情報を取得して上位5つのポートフォリオDisplayItemを構築し、コレクション(List <>)をビューに送信します。ビューには、表示された各プロジェクトの「プロジェクトを表示する」ボタンが付いたプレビューが列に表示されます。これらのボタンをクリックすると、PortfolioControllerアクションの "Display"にルーティングされます。

私の質問は、アクション "表示"のビューに適切なデータを送信する2つの方法の効率についてです。もちろん、選択したDisplayItemのIDを送信してデータベースから取得し、モデルを再構築してビューに送信することもできます。私が最初に考えたのは、これが以前は必要な情報を引き出していたのを見て、これがデータベースの不必要な作業だということでした。 IDメソッドを使用すると、必要になるまで残りの情報を引き出すことはできません。

私の代わりのアイデアは、(POSTで送信できないコレクションを含む)モデルをシリアル化し、次にアクションに文字列として必要なものを投稿し、オブジェクトにシリアル化することです。

私の経験はウェブではなく、ゲームプログラミングなので、私は自分の要素からある程度外れています。どのルートを選択するのかアドバイスが大好きです。この。

+0

IDがテーブルのPKであると仮定すると、データベースからオブジェクトを取得することは盲目的に速くなり、実行する方法です。モデルをビューにシリアライズしてワイヤをまたいで再送信することは、ウェブフォームで 'ViewState'を模倣しようとするのと同じです。 –

+0

もちろん、私は明らかにアプリケーションの詳細は分かりませんが、一般的な理由はありませんコレクションをPOSTできない理由それだけでより多くの作業が必要です。あなたのフィールドは、CollectionProperty [0]のようなIDを持つでしょう。つまり、間違いなくIDを使用し、他の人が言ったようにデータベースを照会する必要があります。 – Jaquez

答えて

2

私は、ページが読み込まれるたびにデータベースを再度照会することをお勧めします。 >減少帯域幅(データが大きい場合) -

要求された情報

に対するユーザの>承認 - 入力の検証(idが渡される)

をご確認ください> - それは

することができます。

- >ルーティングURLをユーザーフレンドリー(ブックマークが簡単)にします。

1

時間が経つにつれてアプリケーションが発展するにつれて、DisplayItemにはより豊かな情報が提供され、インデックスビューには要約情報のみが表示されます。

インデックスビューと詳細ビューでは最終的に異なる情報セットが必要になるため、IDフィールドをワイヤに渡すだけです。

Stepen Mueckeによると、データベースからの読み込みは高速になります。データベースは良い方法です:-)

関連する問題