ASP.NET 由于转发器中背景图像的内联设置,页面加载触发两次



一切都运行了两次。我有一个中继器,我尝试在其项目模板中设置背景图像。我将其缩小到以下行。一旦我拿出背景图像...部分,它只运行一次。照片是一个数据 URI。如果我将代码留在那里,它实际上会显示背景图像,但会导致所有内容运行两次。奇怪的是,如果我在"url"和"("之间放一个空格,它也会停止触发两次,但随后背景图像不会显示,因为它破坏了背景图像所需的语法。我不知为什么它会导致它开火两次。我也尝试了变体,但同样的问题。似乎与我正在使用数据 uri 的事实无关,因为我只尝试了一个典型的文件.jpg它仍然触发了两次......我还将其从样式属性中拉出,并将其放入一个像test="这样的可信属性中,它起作用了。因此,绑定到css属性"background-image:url(...("似乎是一个直接问题。

我甚至尝试将代码移动到 ItemDataBound 事件,它仍然导致页面运行两次。我只是想不通。

<span style='<%# "background-image:url("+DataBinder.Eval(Container.DataItem, "Photo")+");height: 32px; width: 32px;background-size: 100%;background-position:0% 25%;background-repeat:no-repeat;"%>'></span>

<span style='background-image:url(<%#DataBinder.Eval(Container.DataItem, "Photo")%>);height: 32px; width: 32px;background-size: 100%;background-position:0% 25%;background-repeat:no-repeat;'></span>

因此,该问题与我尝试显示图像的任何一种方式都无关,这是由于中继器中的其他一些项目没有 Photo 的值,因此最终产生了:

<span style='background-image:url("");height: 32px; width: 32px;background-size: 100%;background-position:0% 25%;background-repeat:no-repeat;'></span>

这使背景图像的 URL 留空。 显然,这会导致浏览器重新加载页面两次......摘自 2011 年的文章:https://www.bennadel.com/blog/2236-empty-src-and-url-values-can-cause-duplicate-page-requests.htm,听起来空 url(( 被解释为页面本身,从而导致浏览器加载页面两次。有道理,但不确定为什么浏览器不以不同的方式解释它以避免此问题,即无法解释为什么需要或想要尝试将页面本身加载为背景图像。

最新更新