私のコントローラーはすべて、クラスの一番上にこのコードがあります。
public class TestController : Controller
{
//
// GET: /Reports/
string userName;
string uid;
string accountType;
int companyCode;
protected override void Initialize(RequestContext requestContext)
{
base.Initialize(requestContext);
string cookieName = FormsAuthentication.FormsCookieName;
HttpCookie authCookie = Request.Cookies[cookieName];
if (authCookie != null)
{
FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);
string userData = authTicket.UserData;
JavaScriptSerializer serializer = new JavaScriptSerializer();
var userInfo = serializer.Deserialize<MemberModel>(userData);
userName = userInfo.firstName + " " + userInfo.lastName;
uid = userInfo.uid;
accountType = userInfo.accountType;
companyCode = userInfo.companyCode;
}
}
なぜなら、すべてのコントローラーは Cookie にあるユーザー情報を持っている必要があるからです。
これは、すべてのコントローラーでそのコードを記述する正しい方法ではないと思います。
また、自分のモデルでそのメソッドを使用することはできません。
base.Initialize(requestContext); <= 'object' does not contain a definition for 'Initialize'
そのため、そのメソッドを GLOBAL 変数として設定して、コントローラーとモデルで使用する方法を知りたいです。
どなたかご存知の方アドバイスお願いします~
[編集]
ありがとうございました!
[編集]
HomeController で上記のコードのように定義し、testController で userName を呼び出そうとします。しかし、それは空です。(エラーはなくなりました)
テストコントローラーでは、
[HttpGet]
public void test()
{
Response.Write(MemberModelProvider.UserName);
Response.Write(System.Web.HttpContext.Current.Items["UserName"]);
}
それは何も印刷しません...
私は何を間違っていますか?
あなたの助けにとても感謝しています!