我在我的网站上有两个主页。
我在SubMasterPage上有隐藏字段。我正在处理数据并在SubMasterPage Init事件上设置隐藏字段值。我想从Page.aspx中获得隐藏字段的值--我正在Page.aspx上尝试它,获得“对象引用没有设置为对象的实例”。错误
((HiddenField)this.Master.FindControl("hiddenId")).Value但是,当我有一个母版页时,这段代码正常工作。
我有办法解决这个问题吗?还是应该尝试通过会话/querystring e.t.c.传输数据?
发布于 2014-04-16 15:51:29
可以向子母版页添加属性以返回值,并在子页中使用此属性。
例如:
子母版页
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();
}
}例如,在母版页上有一个单一模式弹出消息框,并且希望从任何子页面中显示它时,这一点尤其有用。
https://stackoverflow.com/questions/23113734
复制相似问题