1

他のすべてのコントローラーが継承する ApplicationController.cs を作成しました。このコントローラーを使用して、DB からユーザーの氏名をキャプチャし、ViewBag に設定して、layout.cshtml でキャプチャしようとしています。

また、ユーザーのログインをキャプチャする Global.asax にセッション変数を作成しました。私の問題は、ApplicationController.cs で Session 変数が null であることです。ただし、セッション変数はすべての子コントローラーで適切に設定されます。ここに私の ApplicationController.cs コードがあります:

public abstract class ApplicationController : Controller
{
    private SkadPROEntities db = new SkadPROEntities();

    public SkadPROEntities SkadProDB
    {
        get { return db; }                
    }


    public ApplicationController()
    {
        //string[] currentUserString = User.Identity.Name.Split('\\');
        //string myCurrentUser = currentUserString[1];
        //string myCurrentUser = Session["currentUser"].ToString();
        var empQuery = from employee in db.PRO_LSN_EMPLOYEE_OBJ
                       //where employee.LSN_Security_Nbr == Session["currentUser"].ToString()
                       where employee.LSN_Security_Nbr == "bhopkins"
                       select employee;
        string firstName = "";
        foreach (var myEmployee in empQuery)
        {
            firstName = myEmployee.LSN_cf_First_Name;
        }
        ViewBag.FirstName = firstName;
        ViewBag.EmpName = "Bill Test";
    } 
}

ApplicationController.cs でセッション変数が null になっているのに、すべての子コントローラーに値が設定されているのはなぜですか?

4

1 に答える 1

1

コンストラクターでセッション変数にアクセスすることはできません。おそらく、コンストラクターではなく、子コンストラクターのアクション内でセッション変数にアクセスしようとしています。

ASP.Net MVC コントローラー コンストラクターの Session null を参照してください。

于 2012-04-16T14:33:11.753 に答える