【问题标题】:ScriptManager and UpdatePanel not found in namespace System.Web.UI在命名空间 System.Web.UI 中找不到 ScriptManager 和 UpdatePanel
【发布时间】:2013-10-07 23:21:06
【问题描述】:

我有一个 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 或者我应该寻找的东西吗?

【问题讨论】:

  • 您使用的是 MVC 还是 WebForms? UpdatePanel 和 ScriptManager 是 WebForms 控件。
  • 我正在使用 MVC4。由于我的 Ajax 代码更新了表单控件的内容,因此出现错误(上图)。 MVC4/Web API 应用程序有不同的解决方案吗?

标签: asp.net asp.net-ajax ajaxcontroltoolkit scriptmanager


【解决方案1】:

添加对程序集 System.Web.Extensions 的引用。选择项目-> 添加引用,然后选择程序集名称。

【讨论】:

  • 这没有任何作用。
  • 这对我有用,在将 .NET WebForms 项目从 .NET 4.5 升级到 4.6.1 后,这开始失败,因此添加对 System.Web.Extension 的引用修复了它。
【解决方案2】:

我理解为什么 Garrison 会指出 MVC/Web 表单的区别。我的 MVC 网站上有一些 .aspx 页面,仅用于测试。

但是通过将我的项目的目标框架设置为 3.5,然后再次将其更改回 4.0,我的问题得到了解决。

【讨论】:

  • 对我来说,问题在于设计师生成了一行写着System.Web.UI.WebControls.ScriptManager 而不是System.Web.UI.ScriptManager。 (我认为这是因为我在它不需要的时候给了它一个 id 属性。)
  • 这太棒了!我从 3.5 升级到 4.5.2 并且交换机破坏了构建。现在我恢复到 3.5 并回到 4.5.2 它正在工作。 MS 无法用双手找到他们的 a$$。
【解决方案3】:

对我来说,当我复制/粘贴 ScriptManagerUpdatePanel 块时,就会出现这个问题。 Systems.Web.Extensions 引用未预先包含在项目模板中,仅复制/粘贴不会自动添加引用。添加引用消除了错误。

我正在使用 .Net 3.5。我没有安装任何其他框架,所以这种解决了我的问题。

【讨论】:

    【解决方案4】:

    只需添加行

    &lt;%@ Register TagPrefix="asp" Namespace="System.Web.UI" Assembly="System.Web"%&gt;

    在 .aspx 文件中并重建!

    【讨论】:

    • 今晚这对我有用。另外,我首先只让一个aspx页面成功工作。我还删除了当前工作目录中的 aspx.cs 和 aspx.designer.cs 文件的旧副本。然后我通过在 ./App_GlobalResources/Resource.resx 中重命名为 Resources.Resource5 来消除 Resources.Resource 命名冲突。我用 xsp4 --verbose 而不是 mod_mono_server4 测试了我的 aspx 页面。最后,我使用 xbuild 而不是 MonoDevelop 和 Xamarin ASP.NET 插件进行编译。请给我留下评论,如果需要,我会尽力帮助您。
    【解决方案5】:

    对我来说,问题在于设计师生成了一行写着System.Web.UI.WebControls.ScriptManager 而不是System.Web.UI.ScriptManager,我认为这是因为我给了它一个id 属性,而它不需要它。

    【讨论】:

    • 谢谢,为我修好了!不知道为什么生成的代码中的命名空间是错误的!
    猜你喜欢
    • 2012-03-25
    • 1970-01-01
    • 2011-08-07
    • 1970-01-01
    • 2020-09-09
    • 2022-11-10
    • 1970-01-01
    • 2013-06-22
    相关资源
    最近更新 更多