Vb.net 中继器控件导致回发或回调参数无效

Vb.net 中继器控件导致回发或回调参数无效,vb.net,Vb.net,我已经阅读了许多与我的处境有关的问题,但我没有找到一个这样的问题。我目前有一个转发器,它有4个绑定项,点击转发器中的按钮会导致我的错误,下面是标记和代码隐藏。有人能给我解释一下为什么会发生这种情况以及解决方法吗?(我已排除页面删除,只包括页面加载事件。请告诉我是否应剪切并通过完整代码) 受保护的子页加载(ByVal sender作为对象,ByVal e作为System.EventArgs)处理Me.Load 将项目设置为新列表(字符串) 添加项目(“测试1”) 添加(“测试2”) 添加项目(“

我已经阅读了许多与我的处境有关的问题,但我没有找到一个这样的问题。我目前有一个转发器,它有4个绑定项,点击转发器中的按钮会导致我的错误,下面是标记和代码隐藏。有人能给我解释一下为什么会发生这种情况以及解决方法吗?(我已排除页面删除,只包括页面加载事件。请告诉我是否应剪切并通过完整代码)


受保护的子页加载(ByVal sender作为对象,ByVal e作为System.EventArgs)处理Me.Load
将项目设置为新列表(字符串)
添加项目(“测试1”)
添加(“测试2”)
添加项目(“测试3”)
添加项目(“测试4”)
rptFoo.DataSource=项目
rptFoo.DataBind()
端接头


回答我的问题如果其他人需要这个

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

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

解决方案是将其更改为if(!IsPostback)DataBind(),然后在事件处理程序末尾调用DataBind()方法。无论如何,大多数情况下,您都需要在处理程序末尾调用它来影响更改


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

这是因为在执行
命令操作时,
中继器正在获取数据源(绑定)。只需将
if(而不是ispostback)
添加到
页面加载
方法中。

可能重复的
<!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