asp.net - 由于中继器内背景图像的内联设置,ASP.NET 页面加载触发两次
问题描述
一切都在运行两次。我有一个中继器,我尝试在它的 ItemTemplate 中设置一个背景图像。我将其缩小到以下行。一旦我拉出 style 属性中的 background-image... 部分,它就只运行一次。照片是一个数据uri。如果我将代码留在其中,它实际上会显示背景图像,但会导致所有内容运行两次。奇怪的是,如果我在“url”和“(”之间放置一个空格,它也会停止触发两次,但是背景图像不会显示,因为它破坏了背景图像所需的语法。我不知道为什么它导致它触发两次。我也尝试了变化,但同样的问题。似乎与我使用数据 uri 的事实无关,因为我只尝试了一个典型的 file.jpg,但它仍然触发了两次。 .. 我还把它从 style 属性中拉出来,把它放在一个像 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() 被解释为页面本身,从而导致浏览器加载页面两次。有道理,但不确定为什么浏览器不会以不同的方式解释它以避免这个问题,即无法解释为什么需要或想要将页面本身加载为背景图像。
推荐阅读
- c# - 您如何使用 linq 离开加入“非空”?
- c - 将值分配给 void 数组?
- javascript - 反应:将状态传递给 {this.props.children}
- elasticsearch - 为什么带有分析器的 shingle 令牌过滤器没有产生预期的结果?
- android - Rxjava:插入仅适用于单个但不适用于可完成
- python - 根据索引列表从数组中获取元素
- python - tensorflow_probability 分布应该如何用于多维空间?
- material-ui - MKDOCS 材质主题搜索功能不起作用
- database - Mongo DB:如何从一个集合中复制文档并将其作为字段添加到另一个集合中的相关文档?
- python - 在python中拆分大数据文件