ASP: Командный аргумент

#asp.net #vb.net #vbscript

#asp.net #vb.net #vbscript

Вопрос:

Я пытаюсь передать значения внутри повторителя, привязывающего их к кнопке, и передать их из этой формы в другую форму. Когда я компилирую это, это выдает мне ошибку, указывающую

System.FormatException: Input string was not in a correct format.

Кнопка в коде повторителя в form1.aspx:

 <asp:Button ID="Button1" runat="server" Text="" CommandName= "TEST"  CommandArgument = '<%# Eval("Parking_ID")   ","   Eval("Parking_Name") %>' />
  

в form1.aspx.vb Функция Repeater_ItemCommand:

  Protected Sub repeater1_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.RepeaterCommandEventArgs) Handles repeater1.ItemCommand
        If (e.CommandName = "TEST") Then
            Dim commandArgsAccept As String() = e.CommandArgument.ToString().Split(New Char() {","c})
            Dim value As Int32 = commandArgsAccept(0).ToString
            Dim value1 As String = commandArgsAccept(1).ToString

            Response.Redirect("Default2.aspx?Parking_ID=" amp; value, True)
            Response.Redirect("Default2.aspx?Parking_Name=" amp; value1, True)


            Session("field4") = value
            Session("field6") = value1


        End If






    End Sub
  

Есть ли решение этой проблемы?
С уважением.

Комментарии:

1. Хорошо, я даю ту же идею в предыдущем ответе, но я предполагал, что вам нужно только поле Parking_name.

2. @ Muhammad Akhtar тебе нужно 23, чтобы получить волшебные 10000. желаю удачи…

Ответ №1:

 <asp:Button ID="Button1" runat="server" Text="" CommandName= "TEST"  CommandArgument = '<%# Eval("Parking_ID").ToString()  ","  Eval("Parking_Name").ToString() %>'/>


 Protected Sub repeater1_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.RepeaterCommandEventArgs) Handles repeater1.ItemCommand
        If (e.CommandName = "TEST") Then
            Dim commandArgsAccept As String() = e.CommandArgument.ToString().Split(",")
            Dim value As Int32 = commandArgsAccept(0).ToString
            Dim value1 As String = commandArgsAccept(1).ToString




            Session("field4") = value
            Session("field6") = value1

            Response.Redirect("Default2.aspx?Parking_ID=" amp; value amp; "amp;Parking_Name=" amp; value1, True)


        End If
  

Комментарии:

1. В этой .ToString() части Eval() нет необходимости.

2. @Govind Камалапракаш Мальвия: Parking_ID передается, но Parking_Name не передается.

3. Верно, но в этом ToString() случае он вызывается неявно.

4. @Humam Shbib: ты извлекаешь его из сеанса?

5.@Govind Камалапракаш Мальвия: ДА в form2.aspx.vb Dim field4 As String = Request.QueryString("Parking_ID") Dim field6 As String = Request.QueryString("Parking_Name")

Ответ №2:

Поместите имя ключевого поля базы данных в общедоступную переменную, чтобы у вас не было синтаксической ошибки

 public string registerKey = "myId";

protected void btnCancel_Command (object sender, CommandEventArgs e)
{
    // With the CommandEventArgs you get the parameters sent
    UpdatePanel2.Update ();
}

<asp: Button ID = "btnCancel" Text = "Cancel" CommandName = "CancelDeposit" OnCommand = "btnCancel_Command" runat = "server" CommandArgument = '<% # DataBinder.GetPropertyValue (Container.DataItem, registerKey)%> ">