我的网站上有2个母版页。
我在SubMasterPage上隐藏了字段。我正在SubMasterPage Init事件中处理数据并设置隐藏字段值。我想从Page.aspx获取hiddenfield的值 我在Page.aspx上尝试这个,得到“对象引用未设置为对象的实例”。错误
((HiddenField)this.Master.FindControl("hiddenId")).Value
但是当我有1个母版页时,这段代码正常工作。
我有解决这个问题的方法吗?或者我应该尝试通过session / querystring e.t.c传输数据。?
答案 0 :(得分:0)
您可以向子母版页添加属性以返回值,并在子页面中使用它。
例如
Sub Master Page
public string HiddenValue
{
get
{
//return the value of your hidden field
return HiddenID.Value;
}
}
子页面:
//Method to get the hidden value from the master page, if the master page is a sub master page
private string GetHiddenValue()
{
if (this.Master is SubMasterPage)
{
string value = (this.Master as SubMasterPage).HiddenValue;
return value;
}
else
{
return string.Empty;
}
}
如果您想更进一步,可以向MasterPage类添加扩展方法,以便从任何页面轻松调用它。
例如:
public static class MasterPageExtensions
{
public static string GetHiddenFieldValue(this MasterPage master)
{
if (master is SubMasterPage)
return (master as SubMasterPage).HiddenFieldValue;
else
return string.Empty;
}
}
public class SubMasterPage : MasterPage
{
private HiddenField _hiddenField;
public string HiddenFieldValue
{
get
{
return _hiddenField.Value;
}
}
}
public class ChildPage : Page
{
void TestMethod()
{
string hiddenValue = this.Master.GetHiddenFieldValue();
}
}
当您在母版页上有一个模态弹出消息框,并且您想要从任何子页面显示它时,这一点特别有用。