4

1つのアクションが実行された後(送信ボタンが押された後)に設定したグローバル文字列変数があり、別のボタンを押したときに同じ文字列にアクセスしたいのですが、現在は次のようなことをしています。

GlobalVariable = "blah";
return View();

これに再度アクセスするためのベストプラクティスは何ですか。同じページ(index.cshtml)であることを指摘したい

ありがとう!

4

6 に答える 6

8

ユーザーごとの値の場合は、次を使用します。

Session["MyKey"] = "MyValue"; // save the value
var myValue = (string) Session["MyKey"]; // retrieve the value

すべてのユーザーの1つの値がこれを使用する場合:

Application["MyKey"] = "MyValue"; // save the value
var myValue = (string) Application["MyKey"]; // retrieve the value

お役に立てれば。

于 2012-09-14T14:48:16.083 に答える
4

サイトのすべてのユーザーにこの状態を共有してもらいたいと本当に確信していますか?これは非常にまれな要件です。多くの場合、ユーザーに固有である必要があります。

ASP.NETには、情報を保存できる場所がいくつかあります。

  • アプリケーション-グローバルスコープ。したがって、値はすべてのユーザーに表示されます。
  • セッション-セッションスコープ、1人のユーザーに表示
  • キャッシュ-グローバルスコープ。したがって、値はすべてのユーザーに表示されます。
  • TempData-このリクエストと次のリクエスト中に1人のユーザーに表示されます

例:

public ActionResult MyAction()
{
    HttpContext.Application["global_var"] = "anyone can see me";
    HttpContext.Cache["global_cached"] = "anyone can see me, but I can expire";
    Session["session_var"] = "only this user can see me";
    TempData["flash_var"]= "only this user can see me but also in next request";        
}
于 2012-09-14T14:46:46.437 に答える
3

私はViewBagのファンではないので、私の解決策は、ビューに渡すビューモデルにそれを追加し、HiddenFor()後続の各アクションで必要になった場合にポストバックされるようにを使用することです。

于 2012-09-14T14:39:52.697 に答える
1

ViewBag.GlobalVariableに入れます

于 2012-09-14T14:35:44.527 に答える
0

ASP MVCでSessionまたはviebagを使用する代わりに、この場合はCashingを使用することをお勧めします

 Cache["permvaluetostore"] =valuetokeep
于 2012-09-14T14:45:21.840 に答える
0

そのデータを永続化する必要があります。これを行うには、データベーステーブルまたはSession変数のいずれかを使用できます。

セッション変数値は、現在のセッションで使用できます。

すべてのセッションで値をグローバルにしたい場合は、Cachingの使用を検討することもできます。

于 2012-09-14T14:47:16.060 に答える