マスター ページと子ページ (マスター ページを使用するページ) があります。
子ページから呼び出すクラス/関数があります(このように):
new MasterPageSiteWide().setGeoAndLanguage(ViewState["_country"].ToString(), _lang);
これにより、関数が呼び出されます(ステップスルーすると、値が実行されます)。
マスターページには次のものがあります。
public partial class MasterPageSiteWide : System.Web.UI.MasterPage
{
public string _closeTimeType;
public string _langForCalendar;
public void setGeoAndLanguage(string nation, string lang)
{
string globalresourcestring = string.Empty;
_langForCalendar = (String)GetGlobalResourceObject("share", "lblCalendarLang");
switch (nation.ToUpper())
{
case "USA":
ViewState["geo"] = "USA";
ViewState["langID"] = 1;
_closeTimeType = "PTPA";
break;
case "CAN":
if (lang.ToUpper() == "FR")
{
ViewState["geo"] = "CAN";
ViewState["langID"] = 2;
_closeTimeType = "CANPA";
}
else
{
ViewState["geo"] = "CAN";
ViewState["langID"] = 1;
_closeTimeType = "CANPA";
}
break;
case "MEX":
ViewState["geo"] = "MEX";
ViewState["langID"] = 3;
_closeTimeType = "MEXPA";
break;
default:
ViewState["geo"] = "USA";
ViewState["langID"] = 1;
_closeTimeType = "PTPA";
break;
}
}
protected void Page_Load(object sender, EventArgs e)
{
}
}
コードがステップ実行されると、変数が設定されます_closeTimeType
(_langForClaendar
値を確認できます)。
しかし、子ページに戻ると、それらの値はnull
. 私は次のようにアクセスしています:
Master._closeTimeType
また、ViewState
変数はnull
マスターページが読み込まれた後です。
注:.aspx
ページに次 の行があります。
<%@ MasterType virtualPath="~/MasterPageSiteWide.master"%>
設定している値が変数に保持されないのはなぜですか?