我的页面有 2 个投递箱。第二个下拉框中的数据将根据第一个下拉框中所选的数据而变化。第一个下拉框中更改的数据位于客户端脚本中。现在我尝试获取服务器中第二个下拉框中的所选值但没有得到。如何解决这个问题?
以下是代码:
<div class="field">
<input type="hidden" id="ddlFormatOriginalData" name="ddlFormatOriginalData" runat="server" />
<asp:DropDownList ID="d1" runat="server">
</asp:DropDownList>
</div>
<div class="field">
<input type="hidden" id="ddlFormatOriginalData" name="ddlFormatOriginalData" runat="server" />
<asp:DropDownList ID="d2" runat="server">
</asp:DropDownList>
</div>
Javascript端
$addHandler(ddlFormat, 'change', upDateD2);
function upDateD2(sender) {
var PaperList = $get(ddlPaperStockID); // gets the list for a certain selected value in d1
for (j = 0; j < PaperList.options.length; j++) {
// added List here to d2
}
}
服务器端
string val = d2.selected.value;
但是我没有得到 val 的任何信息,尽管在 firebug 中显示了 d2 下拉框的不同列表。
最佳答案
您可以像下面这样使用
protected override void OnInit(EventArgs e)
{
var postedOptionValue = Request.Form[d2.UniqueID];
d2.Items.Add(new ListItem(postedOptionValue));
base.OnInit(e);
}
但是你应该注意以下异常
Invalid postback or callback argument.
使用启用事件验证
<pages enableEventValidation="true"/>
在配置中或
<%@ Page EnableEventValidation="true" %>
在一个页面中。出于安全目的,此功能验证回发或回调事件的参数是否源自最初呈现它们的服务器控件。
如果数据有效且符合预期,请使用 ClientScriptManager。
RegisterForEventValidation 方法,以便注册回发或回调数据以进行验证。
编辑 1
关于javascript - 如何在客户端填充下拉框数据的情况下获取下拉框选定的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14972822/