Frage

Ich habe den folgenden Code geschrieben:

 Dim E_ID As Integer
 E_ID = Convert.ToInt16(Request.QueryString("ID"))

Aber wenn es ausgeführt wird, bekomme ich immer eine FormatException:

Fehler: Eingabezeichenfolge war nicht in einem korrekten Format.

Was könnte das verursachen?

Ich sende einen solchen Wert.

Protected Sub lnkPrint_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lnkPrint.Click
        lnkPrint.Attributes.Add("onclick", "return openBadgeReportPage('" + ddEvent.DataValueField + "','" + ddType.DataValueField + "')")
    End Sub
End Class
War es hilfreich?

Lösung

Denn jeder Wert wird von der zurückgegeben Request.QueryString("ID") Der Funktionsaufruf ist nicht um konvertierbar zu einem Int16 Typ. Nach der Dokumentation für die Convert.ToInt16 Methode, a FormatException wird geworfen, wann immer die:

Der Wert besteht nicht aus einem optionalen Vorzeichen, gefolgt von einer Abfolge von Ziffern (0 bis 9).

Sie können sehen, welcher Wert ist eigentlich Zurück zurückgegeben, indem Ihr Code in verschiedene Zeilen getrennt und einen Haltepunkt festgelegt wird. Zum Beispiel:

Dim E_ID As Integer
Dim queryString As String
queryString = Request.QueryString("ID")    ' <-- place breakpoint here
E_ID = Convert.ToInt16(queryString)

Andere Tipps

Es gibt 2 Dinge, die Sie hier beachten müssen:

1) Sie versuchen, einer Ganzzahl einen INT16 zuzuweisen (standardmäßig 32 Bit). Dies ist eine gültige Operation. Es besteht jedoch die Möglichkeit, dass Sie einen Fehler in Ihrer Anwendung einführen können.

2) Wie Cody erwähnte, kann der Wert von Request.queryString ("ID") möglicherweise nicht in einen INT16 und damit den Fehler konvertierbar sein. Sie können den folgenden Code ausprobieren, um den von der Anfrage zurückgegebenen Wert zu überprüfen.

Dim E_ID As Int16
Boolean isInteger = Int16.TryParse(Request.QueryString("ID"), out E_ID)

If isInteger Then
     // you have a valid short int inside the E_ID variable now.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top