在ASP.NET中,<input type="button" runat="server" />无法使用。

6

好的,这可能看起来很傻,但在一个ASP.NET .ascx控件上,我试图使用:

<input type="button" runat="server" />

替代方案:

<asp:Button runat="server" />

对我来说不起作用。这段代码:

<asp:Button id="btnBuyCat" runat="server" Text="Buy Cat"
ToolTip="Click to buy a cat" OnClick="btnBuyCat_Click" EnableViewState="false" />

呈现以下HTML:(顺便忽略命名容器)
<input type="submit" id="btnBuyCat" name="btnBuyCat" value="Shopping Cart"
title="Click to buy a cat" />

这基本上没问题,但我想要的是input type="button"而不是input type="submit"

我尝试了这段代码:

<input type="button" id="btnBuyCat" name="btnBuyCat" runat="server"
value="Buy Cat" title="Click to buy a cat" onclick="btnBuyCat_Click"
enableviewstate="False" />

并且获取此HTML代码:

<input type="button" id="btnBuyCat" name="btnBuyCat"" value="Buy Cat"
title="Click to buy a cat" onclick="btnBuyCat_Click" />

很遗憾,渲染的按钮无法正常工作。我甚至尝试使用input type="submit"进行检查,但除非我使用<asp:Button>,否则无法使其正常工作。我确定这与JavaScript有关。
有没有办法在ASP.NET中使用普通的HTML按钮标记和runat="server"

1
尝试添加一个ID,然后再试一次。 - jwsample
4
@Jeroen: "可怕的"?别这样,他只接受了5个问题中3个问题的答案,而不是500个问题中的300个问题。 - BalusC
别担心,Jeroen。如果你能帮我,我会给你一个赞和一个检查标记!我不问很多问题,其中一些没有解决方案! - JohnB
@jwsample:有一个ID,在问题下面看看我的代码。 - JohnB
4个回答

17

你缺少的是UseSubmitBehavior属性,例如:

<asp:Button id="btnBuyCat" runat="server" Text="Buy Cat" 
UseSubmitBehavior="False" ToolTip="Click to buy a cat" 
OnClick="btnBuyCat_Click" EnableViewState="false" />

这将提供给您一个普通按钮,而不是提交按钮。


4

要将输入控件指定为runat=server,您还必须指定一个id。而且您得到的错误可能是由于js错误引起的。标准HTML控件上的onclick事件假定定义了一个脚本方法,而似乎您想执行后台操作。您的选择是根据onclick事件给出的方法名称定义JavaScript函数,或使用__doPostBack方法显式触发后台操作。

<input type="button" runat="server" id="btnTest" />

要在单击时包含回发行为,您将执行<input type="button" runat="server" id="btnTest" onclick="doPostBack('btnTest', '');"/>。 - Fadrian Sudaman
+1 Fadrian,这正是我期望的答案。我只是还没有意识到有关ASP.NET的那些细节。*(羞愧地低下头)* 不过,jball的提示对于我想要完成的事情来说甚至更简单;不过还是谢谢你! - JohnB
如果我成功地尝试了你的建议,我可能会给你打勾,因为从技术上讲,你的答案解释了我的代码为什么不能工作。但是我仍然使用jball的建议,因为它更容易。 - JohnB
没问题。告诉我你怎么做了。 - Fadrian Sudaman

2

你尝试过以下方法吗:

<button type="button" id="btnBuyCat" name="btnBuyCat" value="Shopping Cart"
title="Click to buy a cat"  onclick="btnBuyCat_Click">Click Me!</button>

0

您可以使用:

btnBuyCat.ServerClick += new EventHandler(btnBuyCat_ServerClick);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接