Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重定向不执行任何操作(ASP.NET),如果启用,EventValidation将返回错误_Asp.net_Vb.net_Postback_Response.redirect - Fatal编程技术网

重定向不执行任何操作(ASP.NET),如果启用,EventValidation将返回错误

重定向不执行任何操作(ASP.NET),如果启用,EventValidation将返回错误,asp.net,vb.net,postback,response.redirect,Asp.net,Vb.net,Postback,Response.redirect,我有一个页面,可以从动态生成的按钮中进行选择。ASPX代码如下所示: <div> <asp:Repeater ID="rptrHalls" runat="server" OnItemCommand="Choose_Hall"> <ItemTemplate> <asp:Button ID="btnChooseHall" runat="server" CommandName="<%# Container.Data

我有一个页面,可以从动态生成的按钮中进行选择。ASPX代码如下所示:

<div>
<asp:Repeater ID="rptrHalls" runat="server" OnItemCommand="Choose_Hall">
    <ItemTemplate>
        <asp:Button ID="btnChooseHall" runat="server"
        CommandName="<%# Container.DataItem %>" Text="<%# Container.DataItem %>"
         />
    </ItemTemplate>
</asp:Repeater>
</div>

当我第一次尝试运行代码时,我收到了一条错误消息“Invalid postback/callback argument”。我将ASPX页面设置为具有enableEventValidation=“false”属性,并尝试再次运行它。它很好地生成了页面,但当我点击一个动态生成的按钮时,它的行为就好像它正在加载某个东西,然后将我带回select_hall.aspx(所有这些代码都是一个页面),当(如上面所示)我需要选择_room.aspx。

听起来像是
容器。DataItem
不是您认为的类型。请尝试
CommandName=“
”,然后逐步完成调试器并查看返回的CommandName。我的感觉是,它不是一个字符串,而是某种对象,但很难仅从LINQ查询中分辨出来。

因此,似乎我解决了这个问题。在select_hall.aspx的Page_Load部分,我调用了数据库。每次我调用页面时,它都会重新加载这些值——我认为它们在某种程度上与以前缓存的属性不匹配(例如,底层ASP.NET自动命名),这就是问题的根源。我添加了一个If Not Page.IsPostBack Then子句,在该子句中我放置了数据绑定代码,现在它似乎工作正常。

在调试此代码时,您是否曾进入Choose_Hall()?它实际上似乎没有,但我不确定为什么没有?
        ' Show which halls they are eligible for.
    Dim dbHalls As New pbu_housingDataContext
    'Dim gender As String = Session("gender").ToString
    Dim selectedHalls = (From sh In dbHalls.Rooms _
                         Where sh.gender = Session("gender").ToString _
                         Where sh.current_occupancy < sh.max_occupancy _
                         Where sh.is_available = True _
                         Select sh.building_name).Distinct()
    rptrHalls.DataSource = selectedHalls
    rptrHalls.DataBind()
    Public Sub Choose_Hall(ByVal Sender As Object, ByVal e As RepeaterCommandEventArgs)
    Session("Hall") = e.CommandName.ToString
    Response.Redirect("select_room.aspx")
    End Sub