ASP:传递价值

时间:2011-05-02 08:19:02

标签: asp.net vb.net

我试图将一个带有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没有显示任何值。

任何帮助将不胜感激

此致

2 个答案:

答案 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”]