16

Webforms の ViewState と MVC の ViewBag の間に機能上の違いはありますか? それらは「同じもの」のようです。そして、同じように使用できます。MVC はステートレスな Web を促進し、ページにデータを詰め込まず、肥大化とパフォーマンスの低下を引き起こすためです。しかし、MVCでもそれができるようです。彼らがしたことは、一見、新しい名前を付けただけです。

4

3 に答える 3

9

Web フォームのViewStateは、フォーム データをフォーム内の非表示の暗号化されたフィールドにシリアル化していたため、ポストバックでデータを再バインドできました。

ViewBag/ViewDataは、データを「詰め込む」ことができる辞書です。たとえば、コントローラーに追加してから、ビューでアクセスできます。データはdynamic、データの操作を困難にします。ViewBag はクライアントに送信されません。これは MVC (サーバー パイプライン) の一部です。

どちらも避けるべきです。

まあ、それを使用せずに回避策を見つけることによるViewState。また、ViewModel を使用して ViewBag を回避する必要があります。

于 2012-03-12T02:51:48.670 に答える
6

Viewstate はフォームのコンテンツと共にサーバーにポストバックされるため、ポストバック時にその値を利用できます。ビューバッグは、ページが提供されるまで値を保持するだけで、ビューバッグはメモリから削除されます。したがって、ViewState を使用して呼び出し間で状態を保持できますが、ViewBag で同じことを行うことはできません。

于 2012-03-12T02:51:44.957 に答える
4

ViewBag はクライアント ( Browser ) に送信されません。コントローラーからビューへの移行に使用する純粋なものです(これは、クライアントに送り返される前です)。

MVC では、そのページからポストバックを受け取った場合、Viewstate のように「状態」を回復することはできません。唯一の状態は、ブラウザーに送信したものと、送信したものだけです。

于 2012-03-12T02:50:38.577 に答える