我有一个母版页和一个子页面(使用母版页的页面)。
我有一个从子页面调用的类/函数(如下所示):
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"%>
为什么变量没有保留我设置的值?
答案 0 :(得分:0)
根据您的示例,我认为您可能无意中实例化了一个附加母版页,而实际上您想要调用现有页面实例基于。您可以尝试类似于子页面中的以下演员:
((MasterPageSiteWide)this).setGeoAndLanguage(ViewState["_country"].ToString(), _lang);
您也可以直接尝试,例如
Master.setGeoAndLanguage(ViewState["_country"].ToString(), _lang);
这应该从当前页面实例调用母版页功能,并使页面按预期运行(保留值)。希望有所帮助。