0

このように、要求されたページのクエリ文字列からパラメーター「id」を取得しようとしています

If Request.QueryString IsNot Nothing AndAlso _
            Request.QueryString.GetKey("id") IsNot Nothing Then
            DeleteVehicle(Request.QueryString.GetKey("id"))
 End If

しかし、私はこのエラーが発生します

System.NullReferenceException: Object reference not set to an instance of an object.

Source Error: 

Line 16:         If Request.QueryString IsNot Nothing AndAlso _
Line 17:             Request.QueryString.GetKey("id") IsNot Nothing Then

Source File: G:\projects_backup\Toaab\Toaa\admin\vehicle\view.aspx.vb    Line: 16 

助けてくれますか

編集

これを page_load イベントで呼び出しています

同じページ (自動生成されたリンクがある) がハイパーリンクを介して呼び出されます

コードも次のように変更します

If Request.QueryString("id") IsNot Nothing OrElse Request.QueryString("id") IsNot String.Empty Then
 DeleteVehicle(Request.QueryString("id").ToString)
End If
4

3 に答える 3

4

値が QueryString に存在するかどうかを確認するには、値が null ではなく空の文字列に相当するかどうかを確認します。

代わりにこれを試してください:

If String.IsNullOrEmpty(Request.QueryString("id")) = False Then
    DeleteVehicle(Request.QueryString("id"))
End If
于 2012-04-16T15:52:52.267 に答える
1
  1. C#/VB.Net関数内に文字列パラメータを提供するオーバーロードはありませんGetKey
  2. のすべてのイベントをチェックすると Page Life CycleRequest.QueryString値がnullになることはありません(さらに、null以外の値が含まれています)。
  3. 以下のようにコードを変更してみてください。

If Request.QueryString("id") IsNot Nothing 
                 AndAlso String.IsNullOrEmpty(Request.QueryString("id")) = False Then
    DeleteVehicle(Request.QueryString("id").ToString)
End If
于 2012-04-16T15:59:52.217 に答える
0

Params コレクションを使用することをお勧めします。フォームベースのパラメーターだけでなく、クエリ文字列にも適しています。このように「id」の簡単なテストを行うことができます。

Request.Params.AllKeys.Contains("id")
于 2019-02-18T23:33:36.890 に答える