我试图将一个带有form1.aspx按钮的值传递给form2.aspx
form1.aspx:
<asp:Button ID="Button1" runat="server" Text="Button" CommandArgument = '<%#Eval("Parking_ID")%>' />
按钮位于转发器内,该转发器与Select * From [Parking]
转发器中的每个按钮都应具有基于parking_Id
的唯一CommandArgument
。
在form1.aspx.vb中:
Protected Sub repeater1_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.RepeaterCommandEventArgs) Handles repeater1.ItemCommand
Dim value As Int32 = Convert.ToInt32(e.CommandArgument)
Response.Redirect("form2.aspx?id=" & value)
Session("field4") = value
在Form2.aspx.vb中:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim field4 As String = CType(Session.Item("field4"), String)
Parking_ID1.Text = field4
但是Parking_ID1.text Label
没有显示任何值。
任何帮助将不胜感激
此致
答案 0 :(得分:2)
在设置会话之前,您正在重定向。
此外,您只需执行以下操作即可轻松获取Form2.aspx.vb中的值:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim field4 As String = Request.Querystring("id")
Parking_ID1.Text = field4
自从我使用它以来,你必须原谅我的VB.net语法,但这个概念应该适合你。
根据海报的要求扩展答案:
如果你希望传递多个参数,有几种方法可以做到这一点,尽管你的模型是正确的基础:
Protected Sub repeater1_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.RepeaterCommandEventArgs) Handles repeater1.ItemCommand
Dim value As Int32 = Convert.ToInt32(e.CommandArgument)
Dim dataItem as YourStronglyTypedItem = e.Item.DataItem as YourStronglyTypedItem // c# there - sorry
Session("field4") = dataItem.Property1
Session("field5") = dataItem.Property2 // etc.
Response.Redirect("form2.aspx?Parking_ID=" & value & "&OtherProperty=" & dataItem.Property2)
语法不理想(其中一些是c#,抱歉!),但实质上,如果你可以抓取绑定数据项(通过e.Item.DataItem)并将其强制转换为你绑定的任何对象首先,你可以随心所欲地从中获取任意数量的属性。
所以说你把数据包列表给它。 e.Item.DataItem强制转换为Widget将为您提供该特定窗口小部件的值,然后您可以设置多个会话值(或者实际上只是将整个窗口小部件放入会话中),或者您可以像我一样传递多个查询字符串参数上方。
希望有帮助吗?答案 1 :(得分:0)
您可以按照以下正确的语法操作。 Dim field4 As String = Request.QueryString [“id”]