ASP.NET/HTML: 在ASP.NET (.cs) 中使用HTML按钮的onClick属性

22

我只想知道是否有一种方法可以将我的onClick事件放在.cs文件中:

<button type="submit" runat="server" id="btnLogin" class="button" onclick="btnLogin_Click();">

Login_Click()应该放在.cs文件中:

protected void btnLogin_Click(object sender, EventArgs e)
{
    // do something
} 
请注意,我将不会在这里使用ASP.NET按钮,并且我也不会把我的Login_Click()事件放在.html/.aspx中,以便我不能“暴露”我的代码。有什么建议吗?
5个回答

35

你可以在任何服务器控件上实现这个功能,只需要定义 "runat=server" 即可将该按钮转变为服务器控件。问题可能出在你对事件的定义上:

<button ... runat="server" ... onServerClick="btnLogin_Click" />

这里不需要 "();"...

除此之外,你能解释一下为什么不在这里使用 <asp:Button> 吗?因为我真的看不出有什么问题...


1
在提供的示例中,看起来他已经将其设置为 runat="server" - Roman
1
R0MANARMY 是正确的,你需要为 HtmlButton 使用 "OnServerClick" 事件。我更新了我的示例... - Koen
使用HTML按钮标签而不是ASP控件的常见原因是,ASP会呈现控件的ID,而在普通按钮标签中,您对此有更多的控制。 - Ivan Rascon

19

您需要使用 onServerClick。在MSDN上有一个如何做到这一点的示例:

<button id="Button1" OnServerClick="Button1_OnClick" runat="server">
    Click me!
</button>


protected void Button1_OnClick(object Source, EventArgs e) {
    // secret codes go here
}

5

btnLogin.Click += new EventHandler( btnLogin_Click );

这段代码会将btnLogin_Click事件处理程序分配给按钮的Click事件。

然而,我要指出,在aspx页面的标记中分配处理程序并不会“暴露您的代码”,因为呈现给客户端的HTML中没有任何该信息。


0

我知道现在有点晚了,但是我在这个问题上浪费了很多时间。我正在设置一个带有按钮的 div 的 InnerHtml。如果你想让它工作,你需要在你的按钮中添加 type="submit"。


0

虽然已经很晚了,但对于某些人来说:应用 UseSubmitBehavior="False"。例如

<button type="submit" runat="server" UseSubmitBehavior="False" type="button" id="btnLogin" class="button" onclick="btnLogin_Click();">

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