1つのアクションが実行された後(送信ボタンが押された後)に設定したグローバル文字列変数があり、別のボタンを押したときに同じ文字列にアクセスしたいのですが、現在は次のようなことをしています。
GlobalVariable = "blah";
return View();
これに再度アクセスするためのベストプラクティスは何ですか。同じページ(index.cshtml)であることを指摘したい
ありがとう!
1つのアクションが実行された後(送信ボタンが押された後)に設定したグローバル文字列変数があり、別のボタンを押したときに同じ文字列にアクセスしたいのですが、現在は次のようなことをしています。
GlobalVariable = "blah";
return View();
これに再度アクセスするためのベストプラクティスは何ですか。同じページ(index.cshtml)であることを指摘したい
ありがとう!
ユーザーごとの値の場合は、次を使用します。
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
お役に立てれば。
サイトのすべてのユーザーにこの状態を共有してもらいたいと本当に確信していますか?これは非常にまれな要件です。多くの場合、ユーザーに固有である必要があります。
ASP.NETには、情報を保存できる場所がいくつかあります。
例:
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";
}
私はViewBagのファンではないので、私の解決策は、ビューに渡すビューモデルにそれを追加し、HiddenFor()
後続の各アクションで必要になった場合にポストバックされるようにを使用することです。
ViewBag.GlobalVariableに入れます
ASP MVCでSessionまたはviebagを使用する代わりに、この場合はCashingを使用することをお勧めします
Cache["permvaluetostore"] =valuetokeep
そのデータを永続化する必要があります。これを行うには、データベーステーブルまたはSession変数のいずれかを使用できます。
セッション変数値は、現在のセッションで使用できます。
すべてのセッションで値をグローバルにしたい場合は、Cachingの使用を検討することもできます。