Webforms の ViewState と MVC の ViewBag の間に機能上の違いはありますか? それらは「同じもの」のようです。そして、同じように使用できます。MVC はステートレスな Web を促進し、ページにデータを詰め込まず、肥大化とパフォーマンスの低下を引き起こすためです。しかし、MVCでもそれができるようです。彼らがしたことは、一見、新しい名前を付けただけです。
3 に答える
Web フォームのViewStateは、フォーム データをフォーム内の非表示の暗号化されたフィールドにシリアル化していたため、ポストバックでデータを再バインドできました。
ViewBag/ViewDataは、データを「詰め込む」ことができる辞書です。たとえば、コントローラーに追加してから、ビューでアクセスできます。データはdynamic
、データの操作を困難にします。ViewBag はクライアントに送信されません。これは MVC (サーバー パイプライン) の一部です。
どちらも避けるべきです。
まあ、それを使用せずに回避策を見つけることによるViewState。また、ViewModel を使用して ViewBag を回避する必要があります。
Viewstate はフォームのコンテンツと共にサーバーにポストバックされるため、ポストバック時にその値を利用できます。ビューバッグは、ページが提供されるまで値を保持するだけで、ビューバッグはメモリから削除されます。したがって、ViewState を使用して呼び出し間で状態を保持できますが、ViewBag で同じことを行うことはできません。
ViewBag はクライアント ( Browser ) に送信されません。コントローラーからビューへの移行に使用する純粋なものです(これは、クライアントに送り返される前です)。
MVC では、そのページからポストバックを受け取った場合、Viewstate のように「状態」を回復することはできません。唯一の状態は、ブラウザーに送信したものと、送信したものだけです。