3

私の MVCContrib グリッドの内容は、強く型付けされたビューのモデルから取得されます。投稿が行われると、コントローラーに返されるときに、グリッドの内容はモデル オブジェクトにありません。これは、グリッドがセル内のテキストを含む単なるテーブルとしてレンダリングされるためであることがわかります。ポストが発生したときに、グリッドに送信したリスト データがポストに戻ってくるようにできることはありますか?

4

2 に答える 2

2

TempData を使用して、この情報サーバー側を永続化できます。TempData の情報は、1 つの要求に対して保持されます。ただし、このオプションはあまり好きではありません。

データベースからモデルを再作成できませんか? ユーザーが情報を変更していない場合、変更されていない同じ情報をすべてポストバックする必要があるのはなぜですか? 前に取得した場所からもう一度取得するだけです。

于 2009-07-24T00:07:28.580 に答える
1

グリッドにシリアル化されたモデルを再作成する場合は、グリッド内(またはグリッド外)に、ポストバックするボタンを含むフォームと同じフォーム内に、正しく名前が付けられたフォーム要素を埋め込む必要があります。モデルを再作成するアクション。

これは実行可能ですが、基本的に__VIEWSTATEを再作成しているため、MVCを使用する喜びの多くが失われます(「これは醜いハックであり、考えてもIDEをアンインストールする必要があります」を読んでください)。

あなたが解決しようとしているシナリオをよりよく理解することなしに、あなたを正しい方向に向けることは難しいです。このような状況での通常のワークフローは、モデルを取得することです

  1. ページを生成する
  2. モデルへの変更をページのフォームに記録します
  3. アクションに変更を送信する
  4. モデルをもう一度取得します
  5. TryUpdateを使用して、投稿からモデルへの変更を永続化します

パフォーマンスの問題に苦しんでいる場合(パフォーマンスの問題が正しいことを証明しましたか?時期尚早に最適化していないのですか?)、MVCを実際の方法で曲げるのではなく、発生した場所で対処します(つまり、データアクセスのキャッシュ)。すべきではありません。

于 2009-07-29T22:36:29.147 に答える