我有一个MVC4 / Web API项目,我创建了一个使用Ajax消耗Web API的测试页面。测试进展顺利,所以我开始在UI上工作。我需要做的一件事是使用从Web API返回的数据填充一些表单控件。我为此使用了JQuery。
现在,当我运行应用程序并提交表单时,出现错误,表明页面已更新:
Invalid postback or callback argument. Event validation is enabled using <pages
enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %>
in a page. For security purposes, this feature verifies that arguments to postback
or callback events originate from the server control that originally rendered them.
If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation
method in order to register the postback or callback data for validation.
为了解决这个问题,我将表单控件包装在UpdatePanel中并添加了ScriptManager控件。现在我在构建时遇到以下错误:
The type or namespace name 'ScriptManager' does not exist in the namespace
'System.Web.UI' (are you missing an assembly reference?) C:\Users\xxx\Documents\
Visual Studio 2012\Projects\xxxxxxxxx\xxxxxxxx.Web.API\Public\
xxxxxxxxxxx.aspx.designer.cs 31 41 xxxxxxxx.Web.API
和
The type or namespace name 'UpdatePanel' does not exist in the namespace
'System.Web.UI' (are you missing an assembly reference?) C:\Users\xxx\Documents\
Visual Studio 2012\Projects\xxxxxxxx\xxxxxxxx.Web.API\Public\
xxxxxxxxxxx.aspx.designer.cs 40 41 xxxxxxxx.Web.API
我完全清理了我的解决方案。删除了obj / Debug和obj / Release。我已经研究了这两个问题,它们似乎是同时出现的问题。我已经安装了AjaxControlToolbox,但这并没有什么区别。
我是否需要手动添加到web.config或我应该寻找的东西?
答案 0 :(得分:22)
添加对程序集 System.Web.Extensions 的引用。选择项目 - &gt;添加引用,然后选择程序集名称。
答案 1 :(得分:5)
我理解为什么Garrison指出了MVC / Web Forms的区别。我在我的MVC网站上有一些.aspx页面,我只用于测试。
但我的问题是通过将我的项目的目标框架设置为3.5然后再将其更改回4.0来解决的。
答案 2 :(得分:4)
对我来说,当我复制/粘贴ScriptManager
和UpdatePanel
块时会出现此问题。 Systems.Web.Extensions
引用未预先包含在项目模板中,仅仅复制/粘贴不会自动添加引用。添加引用删除了错误。
我正在使用.Net 3.5。我没有安装任何其他框架,所以这种解决了我的问题。
答案 3 :(得分:3)
只需添加行
即可 <%@ Register TagPrefix="asp" Namespace="System.Web.UI" Assembly="System.Web"%>
答案 4 :(得分:2)
对我来说,问题是设计师已经生成了一行System.Web.UI.WebControls.ScriptManager
而不是System.Web.UI.ScriptManager
,我认为这是因为我没有给它id
属性需要一个。