我的 Default.aspx 中有两个表单
<div class="form">
<form id="WordFilterForm" >
<label for="inputString">Enter a string:</label>
<input type="text" id="inputString" name="inputString" required="required" />
<br />
<asp:Button ID="WordFilterButton" runat="server" Text="Filter" OnClick="WordFilterButton_Click" />
</form>
</div>
<div class="WordCountContainer">
<form id="WordCountForm">
<label for="inputText">Enter a large string:</label>
<textarea id="inputText" name="inputText" rows="10" cols="50" required="required"></textarea>
<br />
<asp:Button ID="WordCountButton" runat="server" Text="Count" OnClick="WordCountButton_Click" />
</form>
<div>
WordFilterButton_Click 和 WordCountButton_Click 均在 Default.aspx.cs 中使用受保护的签名进行定义。
问题是,每当在第二个表单(表单 id="WordCountForm")中单击“计数”按钮时,没有任何反应,并且 WordCountButton_Click 不会根据调试器执行。
但是,如果我将其放在第一种形式中,相同的按钮就可以工作。
知道为什么第二个表单按钮不会执行 OnClick 函数吗?
ASP.NET 页面只能有一个带有 (runat="server") 属性的表单标签来使事件处理程序工作。因此,有必要将上述属性添加到第一个表单,将所有服务器端控件移至其上,然后删除第二个表单,以便在 ASP.NET WebForms 应用程序中正确实现表单/回发。