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

4
尝试在切换内容页面时更新主页面div中的图像,但尝试了多次都没有成功。首先尝试创建一个主页属性,通过声明“MasterType VirtualPath=”并从内容页面的Page Load事件中更新该属性来更新它,但由于此时已经加载了主控件,所以这种方法行不通。当我在主页面的Page Load事件中设置ImageUrl(如果!Page.IsPostBack则设置图像的url属性)时,它确实起作用,因此我知道它可以工作,但我需要每个访问的内容页面都更改图像。

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

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

1个回答

4

我不知道您为什么感到困难。有许多方法可以做到这一点,但我只会展示其中一种方法。我刚刚测试了这个方法,并且它可以正常工作。怎么做?

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

谢谢回复。我在主代码后台类中添加了一个“imagefile”属性,并在内容页加载事件中进行设置。然后我在主页面加载事件中设置img.src,这就是我的错误所在。我修改了您的解决方案,使属性仍然从内容页设置,然后我在主页面中使用<%#imagefile%>来设置img元素的“src”属性。谢谢。 - Vince
这是一个很好的答案,但是现在.NET更喜欢使用模式匹配,就像这样:[CODE] if (Master.FindControl("changingImg") is HtmlImage img) { img.Src = "~/Images/changingImg.png"; }[CODE] - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接