今天由于工作需要,不得不对已经编译好的DropDownList的控件中的选项进行增删操作,
例如一个键值都为1,2,3的DropDownList
<asp:DropDownList ID="DropDownList1" runat="server">
<asp:ListItem>1</asp:ListItem>
<asp:ListItem>2</asp:ListItem>
<asp:ListItem>3</asp:ListItem>
</asp:DropDownList>
编译后:<select name="DropDownList1" id="DropDownList1">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
本以为用js增加一个 <option value="4>4/option>,选中4这个选项后,调用服务器事件 Response.Write(DropDownList1.SelectedValue);结果
回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。
将enableEventValidation="false" 后,即使是将EnableViewState="false",无论怎么选中4,也不会Response出来,看来是对asp.net机制的不够深入,难道是客户端向服务器端调用方法的参数一定要是绑定的内容之内???