从子页面永久更改母版页内容
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】:我能想到的最简洁的方法是将更改保存在某种存储中并创建流程:
-
第一次加载默认值
第一个子页面,更改值并将更改保存在数据库或类似文件中
第二次加载将采用调整后的值,而不是默认值。
快速测试是将值存储到会话构造中。
【讨论】:
以上是关于从子页面永久更改母版页内容的主要内容,如果未能解决你的问题,请参考以下文章