重定向不执行任何操作(ASP.NET),如果启用,EventValidation将返回错误
我有一个页面,可以从动态生成的按钮中进行选择。ASPX代码如下所示:重定向不执行任何操作(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
<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