asp.net - IsPostback 始终为 false,未使用表单提交或 AutoPostBack="true" 触发事件
问题描述
我有一个aspx 页面,带有一个asp:DropDownList(这里是DropDownList_AuthenticationMode)。该元素也有一个 OnSelectedIndexChanged,并且 AutoPostBack 属性设置为 true。
当此下拉列表值更改时,会启动请求并触发 Page_Load 函数,但不会触发“DropDownList_AuthenticationMode_SelectedIndexChanged”函数。
IsPostBack 在 Page_Load 函数中也始终为 false。
我在没有触发此功能的情况下尝试了很多东西。带有 OnClick 属性的结束按钮会启动相同的操作,而不会触发 GetQrCode 方法。
有什么我可能忘记的吗?
<form id="Form1" runat="server">
<div class="rowflex" id="scrollableContent">
<div class=stepContent>
<div>
<span><asp:Literal ID="Literal_GetQrcode" runat="server"/></span>
<br/>
<br/>
<span><asp:Literal ID="Literal_FolderId" runat="server"/></span>
<br/>
<a href="../api/oauth/logout">Logout</a>
<br/>
<br/>
<span><asp:Literal ID="Literal_URL" runat="server"/></span>
<br/>
<asp:TextBox ID="TextBox_URL" runat="server" style="width: 400px; max-width: 600px"/>
<br/>
<br/>
<span><asp:Literal ID="Literal_AuthenticationMode" runat="server"/></span>
<br/>
<asp:DropDownList ID="DropDownList_AuthenticationMode" runat="server" AutoPostBack="true" onselectedindexchanged="DropDownList_AuthenticationMode_SelectedIndexChanged" style="width: 400px; max-width: 600px"></asp:DropDownList>
<br/>
<br/>
<span><asp:Literal ID="Literal_Domain" runat="server" Visible="false"/></span>
<br/>
<asp:TextBox ID="TextBox_Domain" runat="server" Visible="false" style="width: 400px; max-width: 600px"/><br/>
<br/>
<br/>
<asp:Button ID="Button_GetQrCode" runat="server" OnClick="GetQrCode" />
<br/>
<br/>
<asp:label ID="Label_GetQrCodeResult" runat="server"></asp:label>
</div>
</div>
</div>
</form>
和 cs 看起来像这样:
protected void DropDownList_AuthenticationMode_SelectedIndexChanged(object sender, EventArgs e)
{
Literal_Domain.Visible = TextBox_Domain.Visible = (DropDownList_AuthenticationMode.SelectedItem.Text == AUTHENTICATIONMODE_NTLM);
}
我已经没有关于这个问题的想法了。
谢谢 !
解决方案
嗯,如前所述,在这些情况下回发将是正确的。(但话又说回来,页面加载总是会再次触发 - 所以你可能不太在意)。
您关心的是控制事件存根不起作用。我会放入一个 debug.print (或 console.writeline - 你曾经使用过的)。
如果失败,则从该存根中删除代码,将其删除,然后在 Web 表单设计器中,显示属性表,然后双击该索引更改的属性(或任何它),然后您将跳转到代码后面 - 这应该重新连接事件存根。
所以双击上面的组合下拉菜单。它应该为您创建事件,然后您将跳转到代码编辑器。然后 cane 粘贴你之前的代码。
并且该控制台在该事件存根中的任何其他逻辑代码之前写入行 - 您只想确保在开始调试可能尚未运行或首先未运行的代码之前事件确实触发。
推荐阅读
- javascript - 使用画外音增加 `role="spinbutton"`
- reactjs - 用打字稿反应useState(仅一个变量)
- python - 如何从 json 对象中检索特定数据并添加到新数组中
- wordpress - 如何减少 wordpress 网站中的 ttfb 时间?
- java - Maven 在编译阶段连接文本文件
- python-3.x - 使用 Python 更改 YAML 中的特定变量
- python - 如何在 scapy 中构造 CIP 列表身份请求?
- amazon-cloudformation - 将 Lambda Arn 获取到资源中:类型:AWS::Lambda::Permission
- cucumber - 使用 cypress-cucumber-preprocessor 将现有的 cypress 测试转换为黄瓜风格的 bdd。第二个场景没有被选中
- mysql - oracle和mysql之间的数据传输