2016-05-03 16 views
0

私は混乱しており、same informationmultiple actionメソッドではベストプラクティスを知りたいと思っています。私は複数の方法で使用したい5つの値を持っていますaction私はその5つの値を持っているmodelクラスを持っています。C#Asp.net - 複数のアクションメソッドで同じ情報を使用

現在、セッションにデータを格納しておき、それが必要なすべての方法でデータを取得しています(action)。

[HttpPost] 
public ActionResult Index(Model model){ 
    Session["A"]=mode.a; 
    Session["B"]=mode.b; 
    Session["C"]=mode.c; 
    Session["D"]=mode.d; 
    Session["D"]=mode.d; 
} 

[HttpGet] 
public ActionResult Action1(){ 
    Label1.Text=Session["A"]; 
    Label2.Text=Session["B"]; 
    Label3.Text=Session["C"]; 
    Label4.Text=Session["D"]; 
    Label5.Text=Session["E"]; 
} 

[HttpGet] 
public ActionResult Action2(){ 
    Label1.Text=Session["A"]; 
    Label2.Text=Session["B"]; 
    Label3.Text=Session["C"]; 
    Label4.Text=Session["D"]; 
    Label5.Text=Session["E"]; 
} 

だから、単純に私の質問は、私はすべてのアクションメソッドでモデルクラスのobjectことを渡すことができますか?または、actionメソッドでobject of the modelクラスを使用する他のベストプラクティスがあるか、sessionを使用する方が良い方法ですか?

私のすべてactionメソッドのviewsは、同じ `モデルクラスを使用します。

答えて

2

Sessionの中にモデル自体を格納することは、そのオブジェクトの各プロパティを格納する代わりに、ストレージを少し簡単にすることができます。その情報の持続性なし

Session["myModel"]=model; 

Label1.Text=((Model)Session["myModel"]).a; 

Sessionの外に、そこに、複数の上のオブジェクトにアクセスするための他の方法になることはありませGET

+0

異なるがセッションは、サーバーとアプリケーションのパフォーマンスの影響かもしれません。 1Mのユーザが現在ウェブサイトにアクセスしていて、そのデータをセッションに保存しているので、サーバの負荷が増加する可能性があります。セッション中に最大の「1KB」データを保存していることは間違いありません。 –

+1

多くのユーザーがいる場合は、1台のサーバーから実行できる可能性が低いため、セッション用に何らかの種類の共有ストレージを使用する必要があります。データベースからセッション情報を実行することができ、その影響はカスタム永続化実装よりも大きくなることはまずありません。 – ChrisBint

+0

Redisのキャッシュセッション状態プロバイダは、多数のユーザーの共有セッションと永続セッションに適しています。リンク上の詳細実装を見つけるhttps://azure.microsoft.com/en-us/documentation/articles/cache-aspnet-session-state-provider/ –

関連する問題