【问题标题】:repeater control causing Invalid postback or callback argument中继器控件导致无效的回发或回调参数
【发布时间】:2023-03-23 20:36:01
【问题描述】:

我已经阅读了许多与我的情况相关的问题,但我没有找到一个这样的问题。我目前有一个带有 4 个绑定项目的转发器,单击转发器中的按钮会导致我的错误,下面是标记和代码隐藏。有人可以向我解释为什么会发生这种情况并解决它吗? (我已经排除了页面 decleration,只包含了 page_load 事件。让我知道我是否应该剪切并过去完整的代码)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
  <title></title>
</head>
<body>
  <form id="form1" runat="server">
  <div>
    <asp:Repeater ID="rptFoo" runat="server">
      <ItemTemplate>
        <asp:Button ID="btnfoo" runat="server" />
      </ItemTemplate>
    </asp:Repeater>
  </div>
  </form>
</body>
</html>

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim items As New List(Of String)
items.Add("test1")
items.Add("test2")
items.Add("test3")
items.Add("test4")
rptFoo.DataSource = items
rptFoo.DataBind()
End Sub

【问题讨论】:

标签: vb.net


【解决方案1】:

"Invalid postback or callback argument" with Databound controls

回答我的问题,以防其他人需要这个

【讨论】:

    【解决方案2】:

    这是因为Repeater 在您执行item 命令操作时正在获取数据源(绑定)。只需将if(not ispostback) 添加到page_load 方法即可。

    【讨论】:

      【解决方案3】:

      我会在这里重复答案,所以你不需要链接到

      问题是在页面 Load 事件中为控件加载数据并调用 DataBind() 方法。但是,如果在引发事件之前调用 DataBind() 方法,则会在控件命名发生更改时生成上述异常。

      解决办法是把这个改成if(!IsPostback) DataBind(),然后在事件处理程序的最后调用DataBind()方法。无论如何,您大部分时间都需要在处理程序结束时调用它以影响更改。

      如果这不是您的问题,并且您正在使用 JavaScript 修改控件客户端,请查看 this article

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-28
        • 2014-11-18
        • 1970-01-01
        相关资源
        最近更新 更多