在我的ASP.NET应用程序中,我有一个服务器端HTML选择控件。
<select id="CompanyDropDown" runat="server" style="width:330px">
</select>
然后我在我的页面上有一个链接,它运行一个填充此控件的JavaScript函数,并且还选择“当前”项。我可以看到这是有效的,因为列表中包含所有项目,并且选择了正确的项目。
然而,当页面回复时,会回复按钮。
<asp:Button runat="server" ID="btnSaveCompany" Text="Save"
onclick="btnSaveCompany_Click" />
CompanyDropDown.Value
为空,且不包含任何内容。关于如何在回发中看到所选值的任何建议?
(注意:我尝试使用ASP.NET DropDown控件,但是当控件具有在呈现页面后添加的项目时,它无法进行回发验证。)
答案 0 :(得分:2)
由于使用JavaScript添加到列表中的项目不是viewstate的一部分,因此无法在服务器端检索它们。如果您只是尝试获取所选值,请在页面上放置服务器端隐藏字段,并在每次更改下拉列表时使用JavaScript设置其值:
jQuery脚本:
$('#CompanyDropDown').change(function() {
$('#inpSelectValue').val($(this).val());
});
隐藏字段标记:
<input runat="server" id="inpSelectValue" clientidmode="static" type="hidden" />
隐藏字段的值将在回发后传送到服务器。请参阅它以检索所选项目的值。请务必在下拉列表中添加clientidmode="static"
,以便将控件的呈现ID设置为您在ASPX页面中指定的ID(即CompanyDropDown
而不是parentContainer_CompanyDropDown
):
<select id="CompanyDropDown" runat="server" style="width:330px"
clientidmode="static" />
或者,您可以使用AJAX告诉服务器您要添加每个动态生成的列表项或更改选择。如果你需要维护一个项目列表以及选择哪个项目,我只会这样做。
答案 1 :(得分:1)
在JS中操作的值无法在服务器端检索,也不能在回发时保留。您可以将SelectedValue
放在隐藏字段中。在页面回发中,您必须再次设置隐藏字段中保存的SelectedValue
。
答案 2 :(得分:1)
您可以使用Request.Form [CompanyDropDown.UniqueID]。这将没有隐藏的领域。