Asp.net 使用子页面中的数据更新母版页上的链接

Asp.net 使用子页面中的数据更新母版页上的链接,asp.net,master-pages,Asp.net,Master Pages,我在母版页中有一个报告链接菜单。每当用户更改子页面上的值时,我需要在每个页面的末尾追加一个ID。实现这一目标的好方法是什么 更新:我应该提到,子更新发生在UpdatePanel中,这意味着母版页在发生更改时不会重新加载。母版页实际上是它所控制页面的子控件。您可以像页面上的任何其他控件一样控制母版页(几乎)。你所需要做的就是得到它的参考 您将属性添加到母版页的代码中,因此其代码可能如下所示: public partial class _default : System.Web.UI.MasterP

我在母版页中有一个报告链接菜单。每当用户更改子页面上的值时,我需要在每个页面的末尾追加一个ID。实现这一目标的好方法是什么


更新:我应该提到,子更新发生在UpdatePanel中,这意味着母版页在发生更改时不会重新加载。

母版页实际上是它所控制页面的子控件。您可以像页面上的任何其他控件一样控制母版页(几乎)。你所需要做的就是得到它的参考

您将属性添加到母版页的代码中,因此其代码可能如下所示:

public partial class _default : System.Web.UI.MasterPage
{
    protected string m_myString = string.Empty;
    public string myString
    {
        get { return m_myString; }
        set { m_myString = value; }
    }
    protected void Page_Load(object sender, EventArgs e)
    {

    }
}
然后必须将this.Master属性强制转换到母版页

public partial class index : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        // Cast here to get access to your MasterPage
        _default x = (_default)this.Master;
        x.myString = "foo";
    }
}

针对您的更新:

更新后的面板可以将ID写入一个隐藏字段,菜单事件可以在
Request.Form[“fieldName”]
中查找该隐藏字段


请注意,您不应该
fieldName.Text
,因为ASP.NET在为已AJAXed的字段返回正确值方面做得不好。

请参阅我刚刚添加到原始问题中的更新。我通常会使用你的方法,但是部分页面更新会使事情变得复杂。我可以看到你有两个选择。1.在客户端2上使用javascript更新ID。如上所述更新ID,并将母版页的该区域放入第二个更新面板中。如果子项刷新,母版页中的更新面板是否会刷新?我尝试了一个快速测试,但它似乎不起作用,但我可能把事情搞砸了。