首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MasterPage访问控制

MasterPage访问控制
EN

Stack Overflow用户
提问于 2014-04-16 15:24:48
回答 1查看 67关注 0票数 0

我在我的网站上有两个主页。

  1. MainMaster
  2. SubMaster (主页:MainMaster)
  3. 页(母版页:次母版)

我在SubMasterPage上有隐藏字段。我正在处理数据并在SubMasterPage Init事件上设置隐藏字段值。我想从Page.aspx中获得隐藏字段的值--我正在Page.aspx上尝试它,获得“对象引用没有设置为对象的实例”。错误

代码语言:javascript
复制
 ((HiddenField)this.Master.FindControl("hiddenId")).Value

但是,当我有一个母版页时,这段代码正常工作。

我有办法解决这个问题吗?还是应该尝试通过会话/querystring e.t.c.传输数据?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-16 15:51:29

可以向子母版页添加属性以返回值,并在子页中使用此属性。

例如:

子母版页

代码语言:javascript
复制
public string HiddenValue
{
   get
   {
      //return the value of your hidden field
      return HiddenID.Value;
   }
}

儿童页:

代码语言:javascript
复制
//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类添加一个扩展方法,以便轻松地从任何页面调用它。

例:

代码语言:javascript
复制
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();
    }
}

例如,在母版页上有一个单一模式弹出消息框,并且希望从任何子页面中显示它时,这一点尤其有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23113734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档