Asp.net 使用<;输入类型=";“图像”&燃气轮机;但不是类型=";按钮

Asp.net 使用<;输入类型=";“图像”&燃气轮机;但不是类型=";按钮,asp.net,html,updatepanel,Asp.net,Html,Updatepanel,我的ASP.NET应用程序中有一个UpdatePanel控件(实际上有几个,但这不是问题所在) 此表通过codebehind中的一些代码以编程方式生成: TableRow htr = new TableRow(); TableCell htc = new TableCell(); ...<snip> tblGIFs.Rows.Add(htr) TableRow htr=newtablerow(); TableCell htc=新的TableCell(); ... tblGIFs.R

我的ASP.NET应用程序中有一个UpdatePanel控件(实际上有几个,但这不是问题所在)

此表通过codebehind中的一些代码以编程方式生成:

TableRow htr = new TableRow();
TableCell htc = new TableCell();
...<snip>
tblGIFs.Rows.Add(htr)
TableRow htr=newtablerow();
TableCell htc=新的TableCell();
...
tblGIFs.Rows.Add(htr)
这一切都很好,除了我试图在其中一个单元格中添加一个按钮(带有图像):

htc3.Text=”“;
单击此图像时,
onclick
将正常启动,但整个
UpdatePanel
将被刷新(随后,
asp:Table
将消失)

如果我使用
type=“button”
,它可以完全正常工作,并且不会刷新/丢失表中的内容

我在从codebehind触摸表的每个位置上运行了带有断点的页面,但毫无用处,我所能看到的没有任何东西会导致
UpdatePanel
被编程清除


有人看到过这些标签/控件的类似行为,有没有解决方案的想法?一个解决办法显然是使用
type=button
并只是设置按钮的样式,但如果我能让
type=image
正常工作,我宁愿不这样做。

输入类型“image”就像提交按钮。它正在提交表格,因为他们就是这么做的。如果您的代码在不希望发生回发的情况下没有重建表,那么表将不会重建,并因此消失(请记住,无论何时动态构建控件,您都必须在每个请求中执行此操作)。如果不希望按钮回发,请让OnClick处理程序返回false以取消回发。如果确实希望按钮回发,则会出现另一个问题,可能与不正确使用动态控件有关

输入类型“图像”类似于提交按钮。它正在提交表格,因为他们就是这么做的。如果您的代码在不希望发生回发的情况下没有重建表,那么表将不会重建,并因此消失(请记住,无论何时动态构建控件,您都必须在每个请求中执行此操作)。如果不希望按钮回发,请让OnClick处理程序返回false以取消回发。如果确实希望按钮回发,则会出现另一个问题,可能与不正确使用动态控件有关

用动态创建的控件解决。

用动态创建的控件解决。

我想补充一点,每当您在使用UpdatePanel时遇到问题,您应该做的第一件故障排除工作就是删除它。很可能,您经常遇到ole ASP.NET问题,而UpdatePanel承担了责任。UpdatePanel中的post的工作方式与常规回发完全相同(除了通过ajax完成外),因此您的表单在没有回发的情况下应该与使用回发的情况相同。无论如何,这绝对是一个很好的做法。嗨,我知道
UpdatePanel
是如何工作的,你的回答基本上与我的问题无关。现在,
onclick
处理程序只是一个虚拟的警报框(自从我第一次创建它以来,
return false;
,因为它是干连线而不是回发的)。嗯,我完全理解这个问题。您没有说您的单击处理程序返回false。另外,不,实际上它不会返回false,因为OnClick属性中没有return语句,所以返回值不会重新返回到浏览器:)谢谢你的否决票,sheesh。你的答案与为什么它只在使用
type=image
时显示这种行为无关,而与
type=button
无关。继续亲自投票,因为他们没有(你的答案没有用)。是的,他是对的。你应该试着去听:你把type=button和type=submit搞混了。你肯定应该给他答案,而不是降级。我想补充一点,每当你在使用UpdatePanel时遇到问题,你应该做的第一件排除故障的事情就是删除它。很可能,您经常遇到ole ASP.NET问题,而UpdatePanel承担了责任。UpdatePanel中的post的工作方式与常规回发完全相同(除了通过ajax完成外),因此您的表单在没有回发的情况下应该与使用回发的情况相同。无论如何,这绝对是一个很好的做法。嗨,我知道
UpdatePanel
是如何工作的,你的回答基本上与我的问题无关。现在,
onclick
处理程序只是一个虚拟的警报框(自从我第一次创建它以来,
return false;
,因为它是干连线而不是回发的)。嗯,我完全理解这个问题。您没有说您的单击处理程序返回false。另外,不,实际上它不会返回false,因为OnClick属性中没有return语句,所以返回值不会重新返回到浏览器:)谢谢你的否决票,sheesh。你的答案与为什么它只在使用
type=image
时显示这种行为无关,而与
type=button
无关。继续亲自投票,因为他们没有(你的答案没有用)。是的,他是对的。你应该试着去听:你把type=button和type=submit搞混了。你绝对应该给他答案,而不是贬低他。
<asp:Table ID="tblGIFs" runat="server"></asp:table>
TableRow htr = new TableRow();
TableCell htc = new TableCell();
...<snip>
tblGIFs.Rows.Add(htr)
htc3.Text = "<input ID=\""+ii.Value+"\" OnClick = \"btnGIFSearch(this)\" type=\"image\" value=\"/Image/Fiu.png\" />";