【发布时间】:2015-10-07 20:06:34
【问题描述】:
我的测试网络表单有 1 个dropdownlist 和 2 个buttons。就是这样:
<form id="form1" runat="server">
<asp:DropDownList ID="DropDownListTest" runat="server" >
<asp:ListItem>Value 0</asp:ListItem>
<asp:ListItem>Value 1</asp:ListItem>
<asp:ListItem>Value 2</asp:ListItem>
</asp:DropDownList>
<asp:Button ID="ButtonClient" runat="server" Text="Button" OnClientClick="ChangeDropDown(); return false;" />
<asp:Button ID="ButtonServer" runat="server" Text="Server" onclick="ButtonServer_Click" />
</form>
这是javascript函数ChangeDropDown():
function ChangeDropDown() {
for (i = document.getElementById("<%=DropDownListTest.ClientID%>").options.length - 1; i >= 0; i--) {
document.getElementById("<%=DropDownListTest.ClientID%>").remove(i);
}
var opt = document.createElement("option");
opt.text = "Complete";
opt.value = "Complete";
document.getElementById("<%=DropDownListTest.ClientID%>").options.add(opt);
var opt2 = document.createElement("option");
opt2.text = "Not Complete";
opt2.value = "Not Complete";
document.getElementById("<%=DropDownListTest.ClientID%>").options.add(opt2);
}
这是代码隐藏:
protected void ButtonServer_Click(object sender, EventArgs e)
{
string val = this.DropDownListTest.SelectedValue;
}
protected void Page_PreInit(object sender, EventArgs e)
{
Page.EnableEventValidation = false;
//"Invalid postback or callback argument" if I remove this.
}
假设我点击button ButtonClient(更改下拉列表的值),选择“完成”,然后点击ButtonServer。在代码隐藏中,this.DropDownListTest.SelectedValue 的值等于“值 0”而不是“完成”。
我明白我为什么会遇到这个问题,但是除了添加项目代码隐藏之外还有其他解决方案吗?
【问题讨论】:
标签: javascript c# asp.net visual-studio-2010 asp.net-4.0