小さな背景情報が最初に表示されます。私は自分のキャリアのほとんどにWebフォームを使用しており、最近は.NET MVCに興味を持っています。私はそれが無国籍であることを意図していることを認識していますが、どのように完全に実現可能であるのか分かりません。フォームアプリケーションでは、ユーザーが認証され、ユーザーIDといくつかの役割が返され、ユーザーのセッションに配置されます。私がそれらを必要とするとき、私がしなければならないことは、それをセッションから取り除くことであり、私はそれを持っています。私が読んだことから、セッションとMVCは互いに排他的です。私は値を渡すためにTempDataを使うことができるが、それは1ページの訪問のためだけに持続し、その後はそれが消えてしまうことを読んだ。データを渡すすべてのコントローラに冗長コードを追加する以外に、MVCサイトでデータを「永続化」できる標準的な方法はありますか? ASP.NET MVCフレームワークは、ASP.NETフレームワークに基づいて構築され、そのように、あなたはASP.NET MVCでセッション状態を使用することができます.NET MVCを使用して、ページ間にデータを確実に渡します。
3
A
答えて
2
:
Session["MyVar"] = "SomeValue";
3
私はここ面でいくつかの混乱があるかもしれないと思います。本当にステートレスなのはHTTPプロトコルです。 ASP.NET WebFormsは、HTTPのステートレス性を「回避」するフレームワークを構築し、ステートフルなWebベースのアプリケーションフレームワークを作成するために開発されたテクノロジでした。そのため、ViewStateなどのWebフォームでは、本質的にパイプに沿ってアプリケーションの状態を保持するものが表示されます。
ASP.NET MVCが登場し、別のアプローチを採用しました。これは、HTTPのステートレス性を取り入れています。そのため、MVCにはViewStateがありません。
しかし、それはあなたがもはやステートフルエンティティとやりとりしているという意味ではありません。クライアント側のマシン(例えばブラウザ)はステートフルなアプリケーションであり、サーバー側のコード(この場合はIISなど)を実行するサーバーも同様にステートフルです。
したがって、サーバー側にあるものは(セッション、アプリケーション、キャッシュなどの)ステートフルな状態であり、引き続き使用できます。また、クライアント側もステートフルなので、クライアントサイドスクリプトは近年非常に強力になっています。ブラウザのステートフルな状態をフルに活用しようとする人々