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

Posted

技术标签:

【中文标题】从内容页面更新母版页图像【英文标题】:updating master page image from content page 【发布时间】:2013-01-25 16:07:01 【问题描述】:

在内容页面之间切换时,已多次尝试更新母版页 div 中的图像。我首先尝试创建一个母版页属性,我可以通过声明“MasterType VirtualPath=”从内容页的 Page Load 事件中更新该属性,但由于此时已经加载了母版页,因此它无法正常工作。当我在母版页的页面加载事件中设置 ImageUrl 时它确实有效(如果 !Page.IsPostBack 然后设置图像的 url 属性),所以我知道它可以工作,但我需要为我访问的每个内容页面更改图像。

然后我尝试在加载内容页面之前使用主菜单按钮单击事件来设置 ImageUrl,但这也没有效果。我看到一个线程建议使用 UpdatePanel 来保存图像,所以我可以尝试下一个。最好的方法是什么..?

如果更好的方法是将图像放在内容 div 中,并从母版更新,我不会感到惊讶。任何建议或链接都​​将受到欢迎。如果有人想看看,我可以发布代码。谢谢。

【问题讨论】:

【参考方案1】:

我不知道你为什么觉得这很困难。有很多方法可以做到这一点,但我只会展示一种。我刚刚测试了这个并且它有效。怎么样?

在您的母版页中,定义您的图像并添加runat="server"

<img src="put your default image.jpg" runat="server" id="changingImage" />

在您的内容页面中,执行此操作

protected void Page_Load(object sender, EventArgs e)

    htmlImage img = Master.FindControl("changingImage") as HtmlImage;

    img.Src = "~/images/imageForContentPage1.jpg"; //replace this image based on your criteria


当无法找到.FindControl 中指定的图像控件的名称时,可能的例外是Null Reference。确保它与您在母版页中的名称完全相同。为了防止出现空引用异常,请检查

if(img != null)

    img.Src = "~/images/imageForContentPage1.jpg";

【讨论】:

感谢您的回复。我在从内容页面加载事件设置的主代码后面的类中添加了一个“图像文件”属性。然后我在主页面加载事件中设置了 img.src,这是我出错的地方。我修改了您的解决方案,以便仍然从内容页面设置属性,然后我在母版页中使用 来设置 img 元素的“src”属性。谢谢。

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

从内容页面设置母版页上的属性值

如何在 ASP.net 页面中获取母版页的 Div?

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

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

从内容页面访问母版页控件(html:输入)不起作用

如何使母版页中 div 的高度在内容页中展开?