2012-04-19 59 views
0

私はmvc3アプリケーションを作成しました。 変更をデータベースに保存する前に、私はいくつかのことを行う必要があるため、現在はフォームの値をSessionに保存しています。セッション変数の代わりに、私はmvcで自分の一時データを保存できますか?

ViewStateのように、mvcに一時データを保存する他の良い方法はありますか?

私は、データが入力されるたびに、フォームの入力値をSession変数に保存しています。

投稿ごとに私はセッション変数に新しい追加値を設定し、それらの値をすべてwebgridに表示します。

私は最後に挿入ボタンをクリックすると、webgridからすべての値を受け取り、1つのストアドプロシージャをパラメータとして渡します。

Now here i want to achieve 2 things 
1.need to save all inserted data as clicked on submit it gets refresh all time. 
so need to save all previous data to. 
2.currently using session variable which sets to webgrid to show data into webgrid and once done with insertion passing those values to stored procedure. 

他の方法でデータを保存する必要があります。

Else can use javascript to do this all on client side. 
+0

質問は次のとおりです。そのデータを保管する期間とそのデータに誰がアクセスする必要がありますか? – Jan

+0

約1分私はそのデータを必要とするので、私は1つのストアドプロシージャにそのデータを渡す必要があります... – Neo

+0

しかし、あなたはWebアプリケーションのステートレスな性質を認識していますか?誰がデータをストアドプロシージャに渡すコードを呼び出すのですか? – Jan

答えて

5

あなたはステートレスなウェブを作るためにしようとするスキームを避ける必要があり、二つの理由のためのステートフルようです。

第1に、セッションは往復を避けません。データベースに値を格納するのとは名目上異なるだけです。はい、メモリのフェッチはSQLからのフェッチよりも高速ですが、スケーラビリティは向上しません(1台のサーバー以上)。コンポーネントやホップを追加して利益を減らし、複雑さを大幅に増やす必要があります。

第2に、セッション値はデータベースにする可能性が高いため、最初にそこから始めるのはなぜですか。

第3に(はい、もう1つ)、セッションは、隠されたフォームフィールドよりも信頼できるものではありません。

私は13年間で、間違ったことのためにほぼ独占的に使用されてきたセッションを見ました。後で開発者が都合の良いようにセッションを使用して後悔します(コードを置き換えてコードを維持する必要があります)。要するに、データベースを使用してこの情報を保存し、それを取得してキャッシュする方法についてスマートにしてください。

+1

gr8ly説明:)データベースからテーブルを使用できません何か他に何かを提案してください。 – Neo

+0

ViewDataオブジェクトを使って、投稿間にあなた自身を保存してください。各投稿には、あなたのViewDataを含む隠しフィールドが含まれています。 – kingdango

2

投稿にデータを保存する必要がある場合は、セッションが適切な場所です。データをデータベースに書き込む必要がある場合、モデルは投稿のデータを処理する必要があります。お使いのコントローラでは:

[HttpPost] 
public ActionResult Index(YourModel model) 
{ 
    if (ModelState.IsValid) 
    { 
     model.SaveToDataBase(); 
     return View("Success"); 
    } 
    return View("Index", model); 
} 

次にモデルに:

[Serializable] 
public class YourModel 
{ 
    [Required] 
    public string YourData { get; set; } 

    public void SaveToDataBase() 
    { 
     //TODO - add code to call stored procedure with data posted to model 
    } 
} 
関連する問題