他のすべてのコントローラが継承するApplicationController.csを作成しました。このControllerを使用してDBからユーザーのフルネームを取得しようとしていますが、layout.cshtmlでViewBag &のキャプチャに設定されています。MVC3 - layout.cshtmlのDBから情報を取得して埋め込みます
また、ユーザーのログインをキャプチャするGlobal.asaxでセッション変数を作成しました。私の問題は、Session変数がApplicationController.csの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でのセッション変数のヌルですが、すべての子供たちコントローラに移入しますか?
を参照してください?ベースコントローラーを通るのが一番良いと思ったが、セッション変数にアクセスする必要があった。 – user1336495
@ user1336495ベースコントローラーは、レイアウトページデータを取得する場所だと思います。 "OnActionExecuting"メソッドをオーバーライドして、そこに取得できます。それは私がレイアウトでViewBagを使用するのが好きではないと言いました。私はレイアウトで "@ Html.Action"を呼び出すので、別のアクションでデータをフェッチすることができます。 – DMulligan