Asp.net 当使用JavaScript添加选项时,如何在代码隐藏中读取DropDownList的SelectedValue?
当使用JavaScript添加选项时,如何在代码隐藏中读取DropDownList的SelectedValue 还有一点背景:我有级联下拉列表,我想使用JavaScript填充值,这样当用户更改第一个下拉列表中的选择时,我就可以避免回发 我不允许使用更新面板 我已经建立了一个简单的演示问题。以下是我的标记代码:Asp.net 当使用JavaScript添加选项时,如何在代码隐藏中读取DropDownList的SelectedValue?,asp.net,Asp.net,当使用JavaScript添加选项时,如何在代码隐藏中读取DropDownList的SelectedValue 还有一点背景:我有级联下拉列表,我想使用JavaScript填充值,这样当用户更改第一个下拉列表中的选择时,我就可以避免回发 我不允许使用更新面板 我已经建立了一个简单的演示问题。以下是我的标记代码: <p> <asp:DropDownList runat="server" ID="FilterDropDownList" /> </p> &l
<p>
<asp:DropDownList runat="server" ID="FilterDropDownList" />
</p>
<p>
<asp:Button runat="server" ID="SearchButton" Text="Search"
onclick="SearchButton_Click" /><br/>
<asp:TextBox runat="server" ID="QueryTextBox" />
</p>
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
var filterDropDownListId = '#<%= FilterDropDownList.ClientID %>';
$(filterDropDownListId).append($('<option>').prop('value', 'Alpha').html('A'));
$(filterDropDownListId).append($('<option>').prop('value', 'Beta').html('B'));
});
</script>
问题是FilterDropDownList.SelectedValue为空。我本以为是“阿尔法”或“贝塔”。我可以毫无问题地读取QueryTextBox.Text的值
使用JavaScript填充值后,是否可以读取MyDropDownList.SelectedValue?或者您必须使用不同的方法吗?您始终可以使用javascript将所选值写入隐藏的文本框,并读取隐藏代码中的值。您始终可以使用javascript将所选值写入隐藏的文本框,并读取隐藏代码中的值。但这真的有必要吗?这看起来很奇怪,因为我必须使用RegisterForEventValidation注册可能的值以避免安全错误。我100%同意。这就是为什么我把你的问题作为我的最爱添加进来的原因。:)我想看看是否可能。如果这是一个阻碍你发展的问题,你可以通过实施我的建议来“解决”这个问题,如果你最终从社区得到了满意的答案,那么就回去实施这个问题。我将在几天内不回答这个问题,并希望得到解释。如果没有问题,我相信你的回答是正确的我最终将下拉菜单创建为元素,而没有在其上运行runat=“server”。这样我就不必使用隐藏字段,也不必为验证注册允许的值。老派,但它很好用。所以基本上答案是这是不可能的?奇怪。对我来说又是一个不眠之夜……但这真的有必要吗?这看起来很奇怪,因为我必须使用RegisterForEventValidation注册可能的值以避免安全错误。我100%同意。这就是为什么我把你的问题作为我的最爱添加进来的原因。:)我想看看是否可能。如果这是一个阻碍你发展的问题,你可以通过实施我的建议来“解决”这个问题,如果你最终从社区得到了满意的答案,那么就回去实施这个问题。我将在几天内不回答这个问题,并希望得到解释。如果没有问题,我相信你的回答是正确的我最终将下拉菜单创建为元素,而没有在其上运行runat=“server”。这样我就不必使用隐藏字段,也不必为验证注册允许的值。老派,但它很好用。所以基本上答案是这是不可能的?奇怪。对我来说,又是一个不眠之夜。。。。
protected override void Render(HtmlTextWriter writer)
{
// Register the allowed values for the down down list.
Page.ClientScript.RegisterForEventValidation(FilterDropDownList.UniqueID, "Alpha");
Page.ClientScript.RegisterForEventValidation(FilterDropDownList.UniqueID, "Beta");
base.Render(writer);
}
protected void SearchButton_Click(object sender, EventArgs e)
{
Response.Redirect(
String.Format("{0}?dropdown={1}&query={2}",
Request.Url.AbsolutePath,
FilterDropDownList.SelectedValue,
QueryTextBox.Text));
}