【问题标题】:Button in the page does not work after loading加载后页面中的按钮不起作用
【发布时间】:2014-11-21 02:38:07
【问题描述】:

页面执行后页面中的按钮不起作用。此按钮的功能是从提供的路径中检索图像。 isPostBack 的使用在这里很重要,但我不知道在哪里使用它。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class pictures : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {

            Image1.ImageUrl = "~/Images/10003253_697566723628663_1903222345_n.jpg";
            Image2.ImageUrl = "~/Images/1503929_10152290013211351_1280973165_n.jpg";
            Image3.ImageUrl = "~/Images/1558538_697566540295348_743334414_n.jpg";

    }
}

当页面被加载并单击按钮时,会提供以下错误消息:

“/”应用程序中的服务器错误。

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

aspx代码为:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="pictures.aspx.cs" Inherits="pictures" MasterPageFile="~/MasterPage.master"%>


    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
        <asp:Image ID="Image1" runat="server" Height="200px" />
        <asp:Image ID="Image2" runat="server" Height="200px" />
        <asp:Image ID="Image3" runat="server" Height="200px" /><br />
        <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" is/>
    </asp:Content>

【问题讨论】:

标签: c# asp.net


【解决方案1】:

原因是回传到服务器的数据包含一些客户端脚本代码(主要是 Javascript),这会导致某种安全宣传,因此默认情况下,enableEventValidation 设置为真的。

对于特定页面,您可以将其设置为

<%@ Page EnableEventValidation="false" %>

或者你可以在 Web.Config 中使用

<pages enableEventValidation="false"/>  //for all pages

同样的问题

Invalid postback or callback argument. Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page

asp.net: Invalid postback or callback argument

【讨论】:

  • 不要从其他线程复制和粘贴答案。如果它是重复的,只需在 cmets 部分提及。你复制自stackoverflow.com/questions/228969/…
  • @Sam 改变答案
  • 感谢您这样做(Y)
【解决方案2】:

在你的 aspx 文件中,你应该把第一行写成这样:

<%@ Page EnableEventValidation="false" %>

如果您已经有类似 EnableEventValidation="false" %>

Web.Config:

<pages enableEventValidation="false"/>

它有助于在 aspx 中处理所有页面。

【讨论】:

    【解决方案3】:

    Webcontrol“内容”是一个特殊的:

    它用于替换母版页占位符中的控件。

    你可以查看msdn:

    http://msdn.microsoft.com/fr-fr/library/system.web.ui.webcontrols.content(v=vs.110).aspx

    这个 SO 帖子包含更多细节:

    Content control not accessbile from content page?

    能否暂时删除&lt;asp:Content&gt;&lt;/asp:Content&gt; 标记,看看问题是否仍然存在?

    出于一致性和安全原因,如果可以避免,最好不要更改默认的EnableEventValidation 属性值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-29
      • 2023-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-13
      相关资源
      最近更新 更多