从子页面永久更改母版页内容

Posted

技术标签:

【中文标题】从子页面永久更改母版页内容【英文标题】:Altering masterpage content permanently from a subpage 【发布时间】:2021-11-29 06:17:02 【问题描述】:

假设我有一个母版页和 2 个子页。为简单起见,我将第一个子页面称为子页面 A,另一个称为子页面 B。

现在假设我使用以下代码对子页面 A 的母版页标签进行了更改:

var lbl = this.Master.FindControl("my_control") as Label;
lbl.Text = "mynewtext";

它会正常运行,我会看到 my_control 标签有不同的文本。

但是,如果我要切换到子页面 B,母版页标签将变回其初始形式。我知道为什么:每次我加载带有某个母版页的页面时,母版页都会随着子页面的 Page_load 事件一遍又一遍地加载。而且由于在母版页的代码隐藏中,标签“my_control”具有不同的字符串值,我在子页面 A 中的代码更改消失了。

所以我的问题是,如何防止这种情况发生,如何使子页面派生母版页值? 或者很快,如何通过子页面永久修改母版页?

【问题讨论】:

您需要某种形式的数据存储,母版页在加载时可以读取,并应用您存储在那里的自定义设置。这可能是会话存储、数据库、文件、redis,还有很多选项。研究并选择最适合您的方案。 【参考方案1】:

我能想到的最简洁的方法是将更改保存在某种存储中并创建流程:

    第一次加载默认值 第一个子页面,更改值并将更改保存在数据库或类似文件中 第二次加载将采用调整后的值,而不是默认值。

快速测试是将值存储到会话构造中。

【讨论】:

以上是关于从子页面永久更改母版页内容的主要内容,如果未能解决你的问题,请参考以下文章

asp.net 从内容页面更改母版页部分 css

asp.net 从内容页面更改母版页部分 css

从内容页面更新母版页图像

asp.net 如何从具有嵌套母版页的内容页更改父母版页中的控件

使用母版页时在网页上设置背景图片

在 asp.net 母版页中更改页脚颜色