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

时间:2013-02-10 11:22:58

标签: asp.net master-pages

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

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

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

1 个答案:

答案 0 :(得分:3)

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

在您的母版页中,定义您的图片并添加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

}

当无法找到Null Reference中指定的图像控件的名称时,可能的异常为.FindControl。确保它与您在母版页中命名的完全一样。并且为了防止Null Reference Exception,请检查

if(img != null)
{
    img.Src = "~/images/imageForContentPage1.jpg";
}