问题描述
环境:Microsoft Visual Studio 2019 社区,使用 VB.NET 的 ASP.NET v4.8 Web 应用程序项目
问题:我有一个 asp 图像按钮,用于通过每次单击时更改图像(红色-琥珀色-绿色-红色)来指示状态。这是使用 javascript 完成的:
btn.src = newImage;
这很好用。 imageurl 是在 html 中使用 src 访问的,但图像最初是通过设置 imagebutton.imageurl 在 databind 后面的代码中设置的:
btn.ImageUrl = initialImage
在回发(保存)时,我想通过查看当前的 imageurl 来查找状态。
Dim btn As ImageButton = CType(mainGrid.Rows(i).FindControl("btn"),ImageButton))
someval = btn.imageurl
问题在于 imageurl 显示的是最初设置的值,而不是更改后的值。这种奇怪的现象似乎指向我代码中某个地方的错误,因为显然后面保存代码中的 imagebutton 变量对后面的数据绑定代码中的 imagebutton 变量一无所知。
有人可以确认回发中的 imageurl 实际上应该与 html 中更改的 src 匹配吗?
编辑:我应该说我不想在他们每次单击图像按钮时使用服务器端处理。我可以使用命令参数来完成这项工作,但每次点击都会导致数据库写入。每行有十几个按钮,所以我认为制作过程会很慢。
解决方法
由 Albert D. Kallal 提供的答案是,图像按钮不会将任何更改的属性传递回背后的代码。可能的解决方案是 1) 使用更新面板,2) 同时更改成对的隐藏字段(类型确实将更改传回)或 3)在更改后使用 ajax 更新数据库。我使用了选项 3。