我的 ASP.NET 站点中有两个选择列表,由服务器填充了一些元素。
// .aspx
<asp:dropdownlist id="abc" runat="server"></asp:dropdownlist>
<asp:dropdownlist id="def" runat="server"></asp:dropdownlist>
// .aspx.cs
abc.Items.Add(new ListItem("element1", "value1"));
def.Items.Add(new ListItem("element1", "value1"));
由于现在解释的原因太复杂,我还需要用 JavaScript 修改选择列表的选项,添加一些值。
// In the <head> of the .aspx page
var abcList = document.getElementById("abc");
var defList = document.getElementById("def");
var newAbcElement = new Option("element2", "value2", false, false);
var newDefElement = new Option("element2", "value2", false, false);
abcList.options[abcList.length] = newAbcElement;
defList.options[defList.length] = newDefElement;
当然,一旦我将表单发送回服务器(无论是通过提交还是作为来自其他一些表单元素的 PostBack AutoPostBack="true"
),这将搞乱 Even Validation。
无效的回发或回调参数。使用配置或页面中的 <%@ Page EnableEventValidation="true" %> 启用事件验证。出于安全目的,此功能验证回发或回调事件的参数是否源自最初呈现它们的服务器控件。如果数据有效且符合预期,请使用 ClientScriptManager.RegisterForEventValidation 方法注册回发或回调数据以进行验证。
现在,我没有资源和预算来彻底改造整个页面设计,所以:改变下拉列表的最快和最简单的方法是什么,这并不意味着我必须重写整个东西?
以便在提交表单时我的 CodeBehind 文件可以识别通过 JavaScript 添加的值?