我发现__doPostBack存在问题,并找到了解决方法。我正在寻找原因的解释和/或比我的工作更好的解决方案。
场景: 我在下拉列表中填充了值;“-选择-”,“一个”和“两个”。如果用户选择“一个”,则执行客户端脚本。如果用户选择“两个”,则执行服务器端脚本。
问题: 客户端脚本通过调用__doPostBack来发起回发。但是,除非页面上没有LinkButton,Calendar或WizardStep控件,否则实际上不会发生任何回发。我实际上检查了Visual Studio Toolbox中的所有标准工具,并对它们全部进行了测试。它必须是这三个之一。
解决方法: 添加一个链接按钮,该按钮周围环绕一个跨度,且显示设置为无。
<span style="display:none;">
<asp:LinkButton ID="LinkButton1" runat="server">LinkButton</asp:LinkButton>
</span>
Run Code Online (Sandbox Code Playgroud)
问题:有人可以提供这种行为的解释,或者提供比我的“变通方法”更好的解决方案吗?
来源-Javascript(我将其放置在head标签之间)
<script language="javascript" type="text/javascript">
function DropDownList1_change(elementRef) {
var selectedIndex = elementRef.selectedIndex;
if (selectedIndex > 0) {
var selectedValue = elementRef.options[selectedIndex].value;
if (selectedValue == "One") {
alert("Because you selected 'One', special javascript code will be executed");
// Special javascript code goes here
return;
}
else if (selectedValue == "Two") {
// Special server code gets executed on server DropDownList1_SelectedIndexChanged
__doPostBack('DropDownList1', '');
}
} …Run Code Online (Sandbox Code Playgroud)