【问题标题】:Asp.Net Invalid postback or callback argument.Asp.Net 无效的回发或回调参数。
【发布时间】:2014-11-30 22:09:44
【问题描述】:

当我点击按钮从我的网站登录 Facebook 时收到此错误。

回发或回调参数无效。使用配置或页面中的 启用事件验证。出于安全目的,此功能验证回发或回调事件的参数是否源自最初呈现它们的服务器控件。如果数据有效且符合预期,请使用 ClientScriptManager.RegisterForEventValidation 方法注册回发或回调数据以进行验证。

当搜索谷歌并找到这两个链接时,我可以理解错误消息。但是他们并没有解决问题。

asp.net: Invalid postback or callback argument

http://blogs.msdn.com/b/amitsh/archive/2007/07/31/why-i-get-invalid-postback-or-callback-argument-errors.aspx

所以我逐节拆开页面,直到找到导致错误的原因。是这样的:

iframe name="ContentIFrame" class="IFrameStyle"

当我删除 iframe 时,一切正常。但是,我需要页面上的 iframe。谁能帮助 iframe 导致此错误的原因?它与回发无关。

【问题讨论】:

  • 请发布 iframe 的整个 HTML
  • 我发现我将 id 添加到 iframe 并且它可以工作。这是代码
  • iframe 在单独的 window 对象上运行。我怀疑这是否解决了它

标签: c# asp.net iframe


【解决方案1】:

虽然我看到了禁用事件验证的建议(设置EnableEventValidation=false),但我不推荐这种方法,因为它可能会产生安全问题。就我而言,解决问题的方法是使用asp:PlaceHolder,而不是直接将iframe 放入ASPX。然后,在 C# 代码中,我将一个新的HtmlIframe 控件添加到占位符的ControlCollection

在 ASPX 中放置以下内容:

<asp:PlaceHolder runat="server" ID="myPlaceholder" />

然后,将以下内容放入回发处理程序中:

using System.Web.UI.HtmlControls;

HtmlIframe newIframe = new HtmlIframe();
newIframe.Src = "somewhere/some_page.html";
myPlaceholder.Controls.Add(newIframe);

另一种方法是将 iframe 直接放入 ASPX 并将 HTML 元素设置为 runat="server"。设置 runat="server" 后,您应该能够从代码中访问控件的 ID 以设置 src 属性。

【讨论】:

    猜你喜欢
    • 2011-11-20
    • 2014-11-18
    • 2011-09-26
    相关资源
    最近更新 更多