我的测试网络表单有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
(更改下拉列表的值),选择&#34;完成&#34;然后单击ButtonServer
。在代码隐藏中,this.DropDownListTest.SelectedValue
的值等于&#34;值0&#34;而不是&#34;完成&#34;。
我理解为什么我会遇到问题,但除了添加代码隐藏项之外还有其他解决方案吗?
答案 0 :(得分:0)
您无法以标准方式获取值,因为服务器不知道下拉列表中的项目已更改。
但是,您可以直接从请求中获取值:
protected void ButtonServer_Click(object sender, EventArgs e)
{
string val = Request[this.DropDownListTest.UniqueID];
}