【问题标题】:Access imagebutton src in postback在回发中访问 imagebutton src
【发布时间】:2021-07-25 09:20:14
【问题描述】:

环境:Microsoft Visual Studio 2019 社区,使用 VB.NET 的 ASP.NET v4.8 Web 应用程序项目

问题:我有一个 asp 图像按钮,用于通过每次单击时更改图像来指示状态(红色-琥珀色-绿色-红色)。这是使用 javascript 完成的:

btn.src = newImage;

这很好用。 imageurl 是在 html 中使用 src 访问的,但图像最初是通过设置 imagebutton.imageurl 在数据绑定后面的代码中设置的:

btn.ImageUrl = initialImage

在回发(保存)时,我想通过查看当前的 imageurl 来查找状态。

Dim btn As ImageButton = CType(mainGrid.Rows(i).FindControl("btn"), ImageButton))

someval = btn.imageurl

问题在于 imageurl 显示的是最初设置的值,而不是更改后的值。这种奇怪似乎指向我代码中某处的错误,因为很明显后面的保存代码中的 imagebutton 变量对后面的数据绑定代码中的 imagebutton 变量一无所知。

有人可以确认回发中的 imageurl 实际上应该与 html 中更改的 src 匹配吗?

编辑:我应该说我不想在他们每次单击图像按钮时都使用服务器端处理。我可以使用命令参数来完成这项工作,但每次单击时都会导致数据库写入。每行有十几个按钮,所以我认为这在生产中会很慢。

【问题讨论】:

  • 图像控件不像文本框那样具有自动视图状态。因此,您可以在客户端 js 中设置/更改一个文本框 - 并且在回发时该值将持续存在并且可以被后面的代码看到 + 使用。对于图像控制?不幸的是,虽然您可以在客户端 js 代码中设置它 - 该设置在回发时不会持续存在。这意味着/建议您必须将更改的值保存在数组中,或者在网格中设置一些额外的列来保存该值。或者将整个网格放在一个更新的面板中,然后简单地使用后面的代码进行此设置。
  • 好的,阿尔伯特我明白了。我会尝试更新面板的方法。感谢您的帮助。
  • 要么,有一个隐藏的列,并更改 src 和那个额外的列。使用更新面板,您不会得到完整的回发,而且性能+响应通常非常好。但是,如果你全力以赴 - 然后当你更改图像的 src 时,然后将其保存到隐藏字段中 - 但是由于你使用 src 作为信息的“标志”,那么你最好只更改一些值(例如 1 ,2,3) 或其他任何内容,并更改图像的 src - 换句话说,不要使用我们的非持久 URL 作为确定所做选择的手段。所以你仍然可以这样做 - 或更新面板
  • 也是一个很好的建议 - 再次感谢。我查看了更新面板的方法,整个页面是一个带有数十个这些变化指标的网格视图,所以我认为这条路线与将整个内容发回几乎没有什么不同。我最终使用 jquery.post 在每次更改时对数据库进行异步 ajax 更新,效果很好。

标签: asp.net src imageurl


【解决方案1】:

Albert D. Kallal 提供的答案是,图像按钮不会将任何更改的属性传递回后面的代码。可能的解决方案是 1)使用更新面板,2)同时更改成对的隐藏字段(确实传递更改的类型)或 3)在更改后使用 ajax 更新数据库。我使用了选项 3。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多