好吧,这看起来很愚蠢,但在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:(忽略命名容器btw)
<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"
?
答案 0 :(得分:16)
您缺少的是UseSubmitBehavior
属性,例如,
<asp:Button id="btnBuyCat" runat="server" Text="Buy Cat"
UseSubmitBehavior="False" ToolTip="Click to buy a cat"
OnClick="btnBuyCat_Click" EnableViewState="false" />
这将为您提供常规按钮,而不是提交按钮。
答案 1 :(得分:4)
要指定输入控件runat = server,还必须指定id。你得到的错误可能是因为js错误。标准html控件上的onclick事件假定脚本方法定义,而看起来你想要做一个回发类型的操作。您可以选择根据您为onclick事件提供的方法名称定义javascript函数,或使用__doPostBack方法显式触发回发
<input type="button" runat="server" id="btnTest" />
答案 2 :(得分:2)
你试过了吗?
<button type="button" id="btnBuyCat" name="btnBuyCat" value="Shopping Cart"
title="Click to buy a cat" onclick="btnBuyCat_Click">Click Me!</button>
答案 3 :(得分:0)
您可以使用:
btnBuyCat.ServerClick += new EventHandler(btnBuyCat_ServerClick);