image in updatepanel causes whole page refresh
我在更新面板中有一个图像控件,在页面加载中我正在设置它的 url。
page_load 中的代码
1
2 |
string url =“example.com”;
Image1.ImageUrl = url; |
在 aspx 中的更新面板内
1
|
|
我在更新面板中也有几个提交按钮,我正在更新按钮点击时的一些 texboxes 和标签。
但是这会导致整个页面刷新。 (滚动条上升。)
如果将图像移到更新面板之外,则不会发生这种情况。
问题是如果我删除更新面板之外的图像,布局根本不起作用。
谁能帮我这个?谢谢。
更新
我意识到这只发生在 Chrome 中。有人有想法吗?
更新 2
在那个页面上,我通过从更新面板中删除 img 解决了这个问题。让布局工作简直是地狱,但它奏效了。
但是我有另一个页面,当用户单击加载更多时,我将在更新面板中添加新的 imgs。同样的交易,显然这次我不能将图像移出更新面板。这是代码。
1
2 3 4 5 6 7 8 9 10 11 12 13 |
</asp:ScriptManager>
<!–Recent Uploads–> |
后面的代码(上传索引是一个会话变量)
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
upload_index += 5;
for (int i = 0; i < upload_index; i++) { try { SSImage img = images[i]; HyperLink imglink = new HyperLink(); imglink.NavigateUrl =“/Image.aspx?id=” + img.id; imglink.ImageUrl =“/ShowImage.ashx?imgid=” + img.id; imglink.ToolTip = img.title; imglink.CssClass =“imgupload”; Control contentpanel = RecentUpload.ContentTemplateContainer; contentpanel.Controls.AddAt(contentpanel.Controls.Count – 2, imglink); } catch (ArgumentOutOfRangeException) { loaduploads.Visible = false; break; } } |
更新 3
问题不会发生在静态图像上,而是在我尝试从 showimage.ashx 加载时发生。这是代码。
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
<%@ WebHandler Language=“C#” Class=“ShowImage” %>
using System; public class ShowImage : IHttpHandler public void ProcessRequest(HttpContext context) try cmd = new SqlCommand(“SELECT Image_data FROM [Image_table] WHERE Image_id =” + context.Request.QueryString[“imgID”], conn); if (rdr != null) } } public bool IsReusable } |
- 您是否将 Triggers 放入更新面板?
- @zey 是的,我有 asyncpostbacktrigger
- 你可以发布你的代码吗?
- @zey 整件事?
- UpdatePanel 与 asyncpostbacktrigger :)
- @zey我已经更新了问题并输入了代码。该代码在 Firefox 和 ie9 中运行良好(没有用 10 测试)。但似乎在 chrome 中进行了完整的回发。
- 我觉得我以前见过这个问题……几个想法:1)标记生成的HTML是有效的吗? 2) 浏览器/服务器之间的 HTTP 对话是什么样的(在 Chrome 开发工具中查看)?也许那里有一个线索。 3) 我还将附加脚本调试器并查找任何非致命错误。
- @TimMedora 在网络选项卡中,当我单击按钮时,有一个帖子和一堆图像。发起者是 ScriptResource.axd
- @TimMedora 在脚本控制台上有一些关于字体的警告,但那是在所有页面上,除此之外什么都没有
- 如果你通过validator.w3.org 运行整个页面源代码呢?有时结构性错误会使浏览器感到困惑(并且浏览器以不同的方式处理错误)。
- @TimMedora 我在验证器上有两个错误 An img element must have an alt attribute. 没什么重要的。
- 明白了……你能用精简版的页面重现问题吗? (只是使其与其他所有被删除的东西一起工作所需的最少代码)。
- @TimMedora 我会尽力回复你。
- @TimMedora 是的,我已经剥离了所有内容。只是一个加载按钮,然后单击按钮,我将图像加载到更新面板中。不适用于铬。
- 我没有想法……如果你能够压缩项目的独立版本,我会下载并在我的机器上试用。
- @TimMedora 我创建了一个新项目来再次测试它。现在我无法重新创建它。我会看得更深。
- @TimMedora 我更新了问题,请看一下。基本上问题不会发生在静态图像上,而是发生在我从数据库加载的图像上,尤其是从 showimage.ashx 加载的图像上。
- 对不起,我刚刚看到你的最新更新。我使用 UpdatePanel 内的 ASHX 提供的图像创建了一个测试设置,但我无法让它在 IE10 或 Chrome 26 中中断。我尝试提供有效图像并从处理程序中抛出异常。
- 通过静态图像它可以工作..这是否意味着按钮中的逻辑在更改为 imglink.ImageUrl =”ImagesMyImage.png”; 时单击为 imglink.ImageUrl =”ShowImage.ashx?imgid=” + img.id; 它可以工作? (您尝试将控件动态添加到内容模板的部分)
- @HarshBaid 是的,这就是我的意思。
- @TimMedora 感谢您提供帮助。我很感激。我现在有点放弃了,因为我正在为班级项目创建一个网站,并且我已经提交了它。我真的不知道它有什么问题。如果您有时间并想查看源代码,该网站位于 github.com/btevfik/Fuddle。您可以查看 UserProfile.aspx,这就是问题发生的地方。
您应该使用更新面板的异步回发触发器
这是一个例子:
1
|
|
其中 ‘controlID’ 是可以导致回发的元素的 ID,而 ‘eventname’ 是由定义的控件触发以导致回发的特定事件
在我看来,
You should try to add controls to the body instead of updating the ContentTemplate of the UpdatePanel i.e. Create a Panel control in ContentTemplate and add everything in that and update anything in that Panel not the ContentTemplate.
检查逻辑和 aspx 语法,显示将控件添加到 UpdatePanel > ContentTemplate
中包含的 Panel
ASPX
1
2 3 4 5 6 7 8 9 |
<Triggers>
</Triggers> <ContentTemplate> </asp:Panel> </ContentTemplate> </asp:UpdatePanel> |
代码背后
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
ad_index += 5;
for (int i = 0; i < upload_index; i++) { try { SSImage img = images[i]; HyperLink imglink = new HyperLink(); imglink.NavigateUrl =“/Image.aspx?id=” + img.id; imglink.ImageUrl =“/ShowImage.ashx?imgid=” + img.id; imglink.ToolTip = img.title; imglink.CssClass =“imgupload”; // Commented old code //Add controls to Panel instead of updating the ContentTemplate itself |
- 谢谢回复。我最初实际上已经这样做了,但结果相同。
添加另一个更新面板并将您的图像标签放入此更新面板,然后将属性”updatemode”设置为”always”。
试试这个,它肯定会解决你的问题。如果不让我知道。
来源:https://www.codenong.com/16143968/