【发布时间】:2015-06-15 23:56:35
【问题描述】:
下午好,
我有以下问题。我有一个默认从数据库加载的位置下拉列表。 添加链接用于打开弹出窗口以添加新位置。
我可以通过 jquery 向下拉列表添加新项目,但是当我提交按钮 Save 以保存记录时,出现以下错误:
“/”应用程序中的服务器错误。
回发或回调参数无效。启用事件验证 在配置中使用或 在一个页面中。为了安全 目的,此功能验证回发或回调的参数 事件源自最初呈现的服务器控件 他们。如果数据有效且符合预期,请使用 ClientScriptManager.RegisterForEventValidation 方法,以便 注册回发或回调数据以进行验证。描述: 当前执行期间发生未处理的异常 网络请求。请查看堆栈跟踪以获取有关的更多信息 错误及其起源于代码的位置。
异常详细信息:System.ArgumentException:无效回发或 回调参数。使用配置或 在页面中。出于安全目的, 此功能验证回发或回调事件的参数 源自最初呈现它们的服务器控件。如果 数据有效且符合预期,请使用 ClientScriptManager.RegisterForEventValidation 方法,以便 注册回发或回调数据以进行验证。
来源错误:
在执行过程中产生了一个未处理的异常 当前的网络请求。有关原产地和位置的信息 可以使用下面的异常堆栈跟踪来识别异常。
堆栈跟踪:
[ArgumentException:回发或回调参数无效。事件 使用 in 启用验证 配置或页面中的 。 出于安全目的,此功能验证参数 回发或回调事件源自服务器控件 最初渲染它们。如果数据有效且符合预期,请使用 ClientScriptManager.RegisterForEventValidation 方法,以便 注册回发或回调数据以进行验证。]
System.Web.UI.ClientScriptManager.ValidateEvent(字符串唯一 ID, 字符串参数)+8646569
System.Web.UI.Control.ValidateEvent(字符串唯一ID,字符串 事件参数)+69
System.Web.UI.WebControls.DropDownList.LoadPostData(字符串 postDataKey, NameValueCollection postCollection) +53
System.Web.UI.WebControls.DropDownList.System.Web.UI.IPostBackDataHandler.LoadPostData(字符串 postDataKey, NameValueCollection postCollection) +13
System.Web.UI.Page.ProcessPostData(NameValueCollection postData, 布尔值 fBeforeLoad) +343
System.Web.UI.Page.ProcessRequestMain(布尔值 includeStagesBeforeAsyncPoint,布尔型 includeStagesAfterAsyncPoint) +1743版本信息:Microsoft .NET Framework 版本:2.0.50727.5448; ASP.NET 版本:2.0.50727.5459
我不知道到底是什么问题,以及如何解决它。
这是我的原始 html 代码:
<div class="addNew" title="Add New Position Title">
<table>
<tr>
<td>Position Title</td>
<td><asp:TextBox ID="txtPositionTitle" runat="server" /></td>
</tr>
</table>
</div>
<table class="ui-accordion">
<tr>
<td>Position</td>
<td>
<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="True" AutoPostBack="True" DataSourceID="ObjectDataSource1" DataTextField="PoTitle" DataValueField="ID" >
<asp:ListItem Value="-1">...</asp:ListItem>
</asp:DropDownList>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetAll" TypeName="WH.Service.PositionService"></asp:ObjectDataSource>
<asp:HyperLink ID="HyperLink2" runat="server" NavigateUrl="#">Add</asp:HyperLink> </td>
</tr>
<tr>
<td>Qualification</td>
<td>
<asp:CheckBoxList ID="chklstQualification" runat="server" DataSourceID="oDsQualification" DataTextField="QName" DataValueField="ID" RepeatColumns="4" Width="800px" CssClass="TOG_CHECK">
</asp:CheckBoxList>
<asp:ObjectDataSource ID="oDsQualification" runat="server" SelectMethod="GetAll" TypeName="WH.Service.QualificationService"></asp:ObjectDataSource>
</td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td colspan="2">
<asp:Button ID="Button1" runat="server" Text="Save" OnClick="Button1_Click" />
</td>
</tr>
</table>
<script type="text/javascript">
$(function () {
$(".addNew").dialog({
autoOpen: false,
width: 300,
height: 300,
modal: true,
close: function (event, ui) {
//location.reload(false);
},
buttons:
{
"Add": function () {
var poTitle = $("#<%= this.txtPositionTitle.ClientID %>").val();
$.ajax({
type: 'POST',
url: '/Helper/WhHelper.asmx/AddNewPosition',
data: '{"PoTitle":"' + poTitle + '"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
if (msg.d) {
//Alert successfull saving record
alert("Successfully added new item");
//Adding item to selection list
var p = msg.d;
$('#<%= this.DropDownList1.ClientID %>').append('<option value="' + p.ID + '" selected="true">' + p.PoTitle + '</option>');
//Close Dialog Box
$(".addNew").dialog("close");
}
},
error: function () {
alert("Error! Try again...");
}
});
},
"Cancel": function () {
$(this).dialog("close");
}
}
});
$("#<%= this.HyperLink2.ClientID %>").click(function (event) {
event.preventDefault();
$(".addNew").dialog("open");
});
});
</script>
【问题讨论】:
-
Page_Load有code吗?